Add ShaderReflector

- Used to look at the shader files and find set/binding automatically
This commit is contained in:
Thraix
2023-03-14 22:56:11 +01:00
parent 6e463b3560
commit 4fe719858d
20 changed files with 382 additions and 151 deletions
+3 -2
View File
@@ -1,11 +1,12 @@
#version 450
layout(set = 0, binding = 0) uniform sampler2D texSampler;
layout(location = 0) in vec2 fragTexCoord;
layout(location = 0) in vec2 inTexCoord;
layout(location = 0) out vec4 outColor;
void main()
{
outColor = texture(texSampler, fragTexCoord);
outColor = texture(texSampler, inTexCoord);
}
+2 -2
View File
@@ -2,10 +2,10 @@
layout(location = 0) in vec2 inPosition;
layout(location = 0) out vec2 fragTexCoord;
layout(location = 0) out vec2 outTexCoord;
void main()
{
gl_Position = vec4(inPosition * 0.5, 0.999, 1.0);
fragTexCoord = inPosition * 0.5 + 0.5;
outTexCoord = inPosition * 0.5 + 0.5;
}
+38 -38
View File
@@ -2,51 +2,51 @@
layout(set = 0, binding = 0) uniform sampler2D texSamplers[32];
layout(location = 0) in vec3 fragColor;
layout(location = 1) in vec2 fragTexCoord;
layout(location = 2) in flat int fragTexIndex;
layout(location = 0) in vec3 inColor;
layout(location = 1) in vec2 inTexCoord;
layout(location = 2) in flat int inTexIndex;
layout(location = 0) out vec4 outColor;
vec4 TextureColor()
{
if(fragTexIndex == 0) return texture(texSamplers[0], fragTexCoord);
if(fragTexIndex == 1) return texture(texSamplers[1], fragTexCoord);
if(fragTexIndex == 2) return texture(texSamplers[2], fragTexCoord);
if(fragTexIndex == 3) return texture(texSamplers[3], fragTexCoord);
if(fragTexIndex == 4) return texture(texSamplers[4], fragTexCoord);
if(fragTexIndex == 5) return texture(texSamplers[5], fragTexCoord);
if(fragTexIndex == 6) return texture(texSamplers[6], fragTexCoord);
if(fragTexIndex == 7) return texture(texSamplers[7], fragTexCoord);
if(fragTexIndex == 8) return texture(texSamplers[8], fragTexCoord);
if(fragTexIndex == 9) return texture(texSamplers[9], fragTexCoord);
if(fragTexIndex == 10) return texture(texSamplers[10], fragTexCoord);
if(fragTexIndex == 11) return texture(texSamplers[11], fragTexCoord);
if(fragTexIndex == 12) return texture(texSamplers[12], fragTexCoord);
if(fragTexIndex == 13) return texture(texSamplers[13], fragTexCoord);
if(fragTexIndex == 14) return texture(texSamplers[14], fragTexCoord);
if(fragTexIndex == 15) return texture(texSamplers[15], fragTexCoord);
if(fragTexIndex == 16) return texture(texSamplers[16], fragTexCoord);
if(fragTexIndex == 17) return texture(texSamplers[17], fragTexCoord);
if(fragTexIndex == 18) return texture(texSamplers[18], fragTexCoord);
if(fragTexIndex == 19) return texture(texSamplers[19], fragTexCoord);
if(fragTexIndex == 20) return texture(texSamplers[20], fragTexCoord);
if(fragTexIndex == 21) return texture(texSamplers[21], fragTexCoord);
if(fragTexIndex == 22) return texture(texSamplers[22], fragTexCoord);
if(fragTexIndex == 23) return texture(texSamplers[23], fragTexCoord);
if(fragTexIndex == 24) return texture(texSamplers[24], fragTexCoord);
if(fragTexIndex == 25) return texture(texSamplers[25], fragTexCoord);
if(fragTexIndex == 26) return texture(texSamplers[26], fragTexCoord);
if(fragTexIndex == 27) return texture(texSamplers[27], fragTexCoord);
if(fragTexIndex == 28) return texture(texSamplers[28], fragTexCoord);
if(fragTexIndex == 29) return texture(texSamplers[29], fragTexCoord);
if(fragTexIndex == 30) return texture(texSamplers[30], fragTexCoord);
if(fragTexIndex == 31) return texture(texSamplers[31], fragTexCoord);
if(inTexIndex == 0) return texture(texSamplers[0], inTexCoord);
if(inTexIndex == 1) return texture(texSamplers[1], inTexCoord);
if(inTexIndex == 2) return texture(texSamplers[2], inTexCoord);
if(inTexIndex == 3) return texture(texSamplers[3], inTexCoord);
if(inTexIndex == 4) return texture(texSamplers[4], inTexCoord);
if(inTexIndex == 5) return texture(texSamplers[5], inTexCoord);
if(inTexIndex == 6) return texture(texSamplers[6], inTexCoord);
if(inTexIndex == 7) return texture(texSamplers[7], inTexCoord);
if(inTexIndex == 8) return texture(texSamplers[8], inTexCoord);
if(inTexIndex == 9) return texture(texSamplers[9], inTexCoord);
if(inTexIndex == 10) return texture(texSamplers[10], inTexCoord);
if(inTexIndex == 11) return texture(texSamplers[11], inTexCoord);
if(inTexIndex == 12) return texture(texSamplers[12], inTexCoord);
if(inTexIndex == 13) return texture(texSamplers[13], inTexCoord);
if(inTexIndex == 14) return texture(texSamplers[14], inTexCoord);
if(inTexIndex == 15) return texture(texSamplers[15], inTexCoord);
if(inTexIndex == 16) return texture(texSamplers[16], inTexCoord);
if(inTexIndex == 17) return texture(texSamplers[17], inTexCoord);
if(inTexIndex == 18) return texture(texSamplers[18], inTexCoord);
if(inTexIndex == 19) return texture(texSamplers[19], inTexCoord);
if(inTexIndex == 20) return texture(texSamplers[20], inTexCoord);
if(inTexIndex == 21) return texture(texSamplers[21], inTexCoord);
if(inTexIndex == 22) return texture(texSamplers[22], inTexCoord);
if(inTexIndex == 23) return texture(texSamplers[23], inTexCoord);
if(inTexIndex == 24) return texture(texSamplers[24], inTexCoord);
if(inTexIndex == 25) return texture(texSamplers[25], inTexCoord);
if(inTexIndex == 26) return texture(texSamplers[26], inTexCoord);
if(inTexIndex == 27) return texture(texSamplers[27], inTexCoord);
if(inTexIndex == 28) return texture(texSamplers[28], inTexCoord);
if(inTexIndex == 29) return texture(texSamplers[29], inTexCoord);
if(inTexIndex == 30) return texture(texSamplers[30], inTexCoord);
if(inTexIndex == 31) return texture(texSamplers[31], inTexCoord);
return vec4(1, 1, 1, 1);
}
void main() {
outColor = vec4(fragColor, 1.0) * TextureColor();
// outColor = vec4(fragTexCoord, 0.0, 1.0);
void main()
{
outColor = vec4(inColor, 1.0) * TextureColor();
}
+2 -1
View File
@@ -9,7 +9,8 @@ layout(location = 0) out vec3 fragColor;
layout(location = 1) out vec2 fragTexCoord;
layout(location = 2) out int fragTexIndex;
void main() {
void main()
{
gl_Position = vec4(inPosition, 1.0);
fragColor = inColor;
fragTexCoord = inTexCoord;
+8 -7
View File
@@ -2,14 +2,15 @@
layout(set = 0, binding = 1) uniform sampler2D texSampler;
layout(location = 0) in vec3 fragColor;
layout(location = 1) in vec2 fragTexCoord;
layout(location = 2) in vec3 fragPosition;
layout(location = 3) in vec3 fragLightPos;
layout(location = 0) in vec3 inColor;
layout(location = 1) in vec2 inTexCoord;
layout(location = 2) in vec3 inPosition;
layout(location = 3) in vec3 inLightPos;
layout(location = 0) out vec4 outColor;
void main() {
float scale = 0.45 + max(dot(vec3(0, 1, 0), normalize(fragLightPos - fragPosition)), 0.0);
outColor = vec4(fragColor, 1.0) * texture(texSampler, fragTexCoord) * scale;
void main()
{
float scale = 0.45 + max(dot(vec3(0, 1, 0), normalize(inLightPos - inPosition)), 0.0);
outColor = vec4(inColor, 1.0) * texture(texSampler, inTexCoord) * scale;
}
+10 -9
View File
@@ -12,15 +12,16 @@ layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inColor;
layout(location = 2) in vec2 inTexCoord;
layout(location = 0) out vec3 fragColor;
layout(location = 1) out vec2 fragTexCoord;
layout(location = 2) out vec3 fragPosition;
layout(location = 3) out vec3 fragLightPos;
layout(location = 0) out vec3 outColor;
layout(location = 1) out vec2 outTexCoord;
layout(location = 2) out vec3 outPosition;
layout(location = 3) out vec3 outLightPos;
void main() {
void main()
{
gl_Position = ubo.projection * ubo.view * ubo.model * vec4(inPosition, 1.0);
fragColor = inColor;
fragTexCoord = inTexCoord;
fragPosition = vec3(ubo.model * vec4(inPosition, 1.0));
fragLightPos = ubo.lightPos;
outColor = inColor;
outTexCoord = inTexCoord;
outPosition = vec3(ubo.model * vec4(inPosition, 1.0));
outLightPos = ubo.lightPos;
}