Some slang progress

This commit is contained in:
2024-12-17 12:32:44 -06:00
parent b3c2e0114f
commit b5958189cf
33 changed files with 617 additions and 255 deletions

View File

@ -17,7 +17,7 @@ namespace Dawn {
int32_t width = -1;
int32_t height = -1;
GLuint id = -1;
GLuint samplerId = -1;
// GLuint samplerId = -1;
TextureFormat format;
TextureDataFormat dataFormat;

View File

@ -87,6 +87,27 @@ namespace Dawn {
assertNoGLError();
assertTrue(status == GL_TRUE, "Failed to link shader program.");
std::vector<std::string> uniformNames;
GLint numUniforms = 0;
// Get the number of active uniforms
glGetProgramiv(shaderProgram, GL_ACTIVE_UNIFORMS, &numUniforms);
assertNoGLError();
// Iterate through each uniform
// for (GLint i = 0; i < numUniforms; ++i) {
// char name[256];
// GLsizei length;
// GLint size;
// GLenum type;
// // Get the uniform name
// glGetActiveUniform(shaderProgram, i, sizeof(name), &length, &size, &type, name);
// assertNoGLError();
// std::cout << "Uniform: " << i << ":" << name << std::endl;
// // uniformNames.push_back(std::string(name));
// }
// Map parameters correctly.
std::for_each(
parameters.begin(),

View File

@ -30,19 +30,14 @@ void SimpleTexturedShader::getStages(
float4x4 u_Model;
float4 u_Color;
bool u_HasTexture;
uniform Sampler2D u_Texture;
};
layout(binding = 1)
uniform Sampler2D u_Texture;
struct AssembledVertex {
float3 position : POSITION;
float2 texcoord : TEXCOORD;
};
struct CoarseVertex {
};
struct Fragment {
float4 color;
};
@ -126,8 +121,6 @@ void SimpleTexturedShader::getStages(
program.writeRef()
);
slang::ProgramLayout* layout = program->getLayout();
Slang::ComPtr<IComponentType> linkedProgram;
auto result = program->link(linkedProgram.writeRef(), diagnostics.writeRef());
std::cout << "Result: " << result << std::endl;
@ -150,6 +143,21 @@ void SimpleTexturedShader::getStages(
return;
}
slang::ProgramLayout* layout = program->getLayout();
unsigned parameterCount = layout->getParameterCount();
for(unsigned pp = 0; pp < parameterCount; pp++) {
slang::VariableLayoutReflection* parameter = layout->getParameterByIndex(pp);
std::cout << "Parameter: " << parameter->getName() << std::endl;
auto layout = parameter->getTypeLayout();
auto fields = layout->getFieldCount();
for(unsigned ff = 0; ff < fields; ff++) {
slang::VariableLayoutReflection* field = layout->getFieldByIndex(ff);
std::string fieldName = field->getName();
std::cout << "Field: " << fieldName << std::endl;
}
}
std::string vertexString = (const char*)vertexBlob->getBufferPointer();
std::ofstream out("/home/yourwishes/htdocs/Dawn/vertex.glsl");
out << vertexString;
@ -220,40 +228,9 @@ void SimpleTexturedShader::getStages(
}
));
// Parameters
// parameters.push_back(ShaderParameter(
// "u_Projection",
// &rel->projection,
// ShaderParameterType::MAT4
// ));
// parameters.push_back(ShaderParameter(
// "u_View",
// &rel->view,
// ShaderParameterType::MAT4
// ));
// parameters.push_back(ShaderParameter(
// "u_Model",
// &rel->model,
// ShaderParameterType::MAT4
// ));
// parameters.push_back(ShaderParameter(
// "u_Color",
// &rel->color,
// ShaderParameterType::COLOR
// ));
// parameters.push_back(ShaderParameter(
// "u_HasTexture",
// &rel->hasTexture,
// ShaderParameterType::BOOLEAN
// ));
parameters.push_back(ShaderParameter(
"u_Texture_0",
"Uniforms_u_Texture_0",
&rel->texture,
ShaderParameterType::TEXTURE
));