Skip to content

Commit 764b35d

Browse files
[Rendering] Fixes to shader code;
1 parent 17e4ec7 commit 764b35d

File tree

5 files changed

+66
-50
lines changed

5 files changed

+66
-50
lines changed

BuiltinResources/Hidden/Shaders/Default/SolidColor.shader

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ End Instancing
1111

1212
Begin Common
1313

14-
cbuffer Uniforms
15-
{
16-
float4 mainColor;
17-
};
18-
1914
struct VertexOutput
2015
{
2116
float4 position : SV_Position;
@@ -26,6 +21,12 @@ End Common
2621

2722
Begin Vertex
2823

24+
[[vk::binding(1, StapleUniformBufferSet)]]
25+
cbuffer Uniforms
26+
{
27+
float4 mainColor;
28+
};
29+
2930
struct Input
3031
{
3132
float3 position : POSITION;

BuiltinResources/Hidden/Shaders/Default/Standard.shader

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,13 @@ End Instancing
2727

2828
Begin Common
2929

30+
[[vk::binding(1, StapleUniformBufferSet)]]
3031
cbuffer Uniforms
3132
{
3233
float3 viewPosition;
33-
Sampler2D ambientOcclusionTexture;
3434
float4 diffuseColor;
35-
Sampler2D diffuseTexture;
36-
Sampler2D displacementTexture;
3735
float4 emissiveColor;
38-
Sampler2D emissiveTexture;
39-
Sampler2D heightTexture;
40-
Sampler2D normalTexture;
4136
float4 specularColor;
42-
Sampler2D specularTexture;
4337
float cutout;
4438
float alphaThreshold;
4539
};
@@ -61,8 +55,6 @@ End Common
6155

6256
Begin Vertex
6357

64-
//TODO: Get slang to handle multiple preprocessor conditions
65-
6658
struct Input
6759
{
6860
float3 position : POSITION;
@@ -97,30 +89,43 @@ VertexOutput VertexMain(Input input)
9789
output.lightNormal = StapleLightNormal(input.normal, model);
9890
output.instanceID = input.instanceID;
9991

100-
//#if LIT && PER_VERTEX_LIGHTING
101-
//output.color = float4x4(diffuseColor.rgb * StapleProcessLights(viewPosition, output.worldPosition, input.normal), diffuseColor.a);
92+
//TODO: handle light array
93+
/*
94+
#if defined(LIT) && defined(PER_VERTEX_LIGHTING)
95+
output.color = float4x4(diffuseColor.rgb * StapleProcessLights(viewPosition, output.worldPosition, input.normal), diffuseColor.a);
10296
103-
//#ifdef VERTEX_COLORS
104-
// output.color = input.color * output.color;
105-
// #endif
106-
//#else
97+
#ifdef VERTEX_COLORS
98+
output.color = input.color * output.color;
99+
#endif
100+
#else
101+
output.color = input.color;
102+
#endif
103+
*/
107104
output.color = input.color;
108-
//#endif
109105

110106
return output;
111107
}
112108
End Vertex
113109

114110
Begin Fragment
115111

112+
[[vk::binding(0, StapleSamplerBufferSet)]]
113+
cbuffer Textures
114+
{
115+
Sampler2D diffuseTexture;
116+
#ifdef NORMALMAP
117+
Sampler2D normalTexture;
118+
#endif
119+
};
120+
116121
[shader("fragment")]
117122
float4 FragmentMain(VertexOutput input) : SV_Target
118123
{
119-
//#if VERTEX_COLORS || PER_VERTEX_LIGHTING
120-
// float4 diffuse = input.color * diffuseColor;
121-
//#else
124+
#if defined(VERTEX_COLORS) || defined(PER_VERTEX_LIGHTING)
125+
float4 diffuse = input.color * diffuseColor;
126+
#else
122127
float4 diffuse = diffuseTexture.Sample(input.coords) * diffuseColor;
123-
//#endif
128+
#endif
124129

125130
#ifdef CUTOUT
126131
if(diffuse.a < alphaThreshold)
@@ -129,26 +134,28 @@ float4 FragmentMain(VertexOutput input) : SV_Target
129134
}
130135
#endif
131136

132-
//#if LIT && PER_VERTEX_LIGHTING
133-
return diffuse;
137+
//TODO: handle light array
134138
/*
135-
#elif LIT
139+
#if defined(LIT) && defined(PER_VERTEX_LIGHTING)
140+
return diffuse;
141+
#elif defined(LIT)
136142
137-
#if NORMALMAP
143+
#ifdef NORMALMAP
138144
float3x3 tbn = float3x3(normalize(input.tangent), normalize(input.bitangent), normalize(input.normal));
139145
140146
float3 normalMapNormal = normalize(normalTexture.Sample(v_texcoord0).xyz * 2.0 - 1.0);
141147
142148
float3 light = StapleProcessLightsTangent(viewPosition, input.worldPosition, normalMapNormal, tbn);
143149
#else
144-
float3 light = StapleProcessLights(viewPosition, input.world, input.lightNormal);
150+
float3 light = StapleProcessLights(viewPosition, input.worldPosition, input.lightNormal);
145151
#endif
146152
147153
return float4(light, 1) * diffuse;
154+
#else
155+
return diffuse;
156+
#endif
148157
*/
149-
//#else
150-
//return diffuse;
151-
//#endif
158+
return diffuse;
152159
}
153160

154161
End Fragment

BuiltinResources/Hidden/Shaders/Sprite/Sprite.shader

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ End Parameters
1111

1212
Begin Common
1313

14+
[[vk::binding(1, StapleUniformBufferSet)]]
1415
cbuffer Uniforms
1516
{
1617
float4 mainColor;
17-
Sampler2D mainTexture;
1818
};
1919

2020
struct VertexOutput
@@ -53,6 +53,12 @@ End Vertex
5353

5454
Begin Fragment
5555

56+
[[vk::binding(0, StapleSamplerBufferSet)]]
57+
cbuffer Textures
58+
{
59+
Sampler2D mainTexture;
60+
};
61+
5662
[shader("fragment")]
5763
float4 FragmentMain(VertexOutput input) : SV_Target
5864
{

BuiltinResources/Hidden/Shaders/UI/imgui.shader

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ End Vertex
5151

5252
Begin Fragment
5353

54-
[[vk::binding(0, 2)]]
54+
[[vk::binding(0, StapleSamplerBufferSet)]]
5555
cbuffer Uniforms
5656
{
5757
Sampler2D mainTexture;

Tools/ShaderIncludes/Staple.slang

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,26 @@ module Staple;
33
__include StapleMath;
44
__include StapleLighting;
55

6-
#define STAPLE_SKINNING_STAGE_INDEX 15
7-
#define STAPLE_LIGHTING_NORMAL_MATRIX_STAGE_INDEX 14
6+
#define STAPLE_SKINNING_STAGE_INDEX 14
7+
#define STAPLE_LIGHTING_NORMAL_MATRIX_STAGE_INDEX 13
88

99
#ifdef STAPLE_VERTEX_SHADER
10-
[[vk::binding(0, 1)]]
10+
public static const int StapleSamplerBufferSet = 0;
11+
public static const int StapleUniformBufferSet = 1;
12+
#elif defined(STAPLE_FRAGMENT_SHADER)
13+
public static const int StapleSamplerBufferSet = 2;
14+
public static const int StapleUniformBufferSet = 3;
15+
#elif defined(STAPLE_COMPUTE_SHADER)
16+
public static const int StapleSamplerBufferSet = 0;
17+
public static const int StapleReadWriteBufferSet = 1;
18+
public static const int StapleUniformBufferSet = 2;
19+
#else
20+
public static const int StapleSamplerBufferSet = 0;
21+
public static const int StapleReadWriteBufferSet = 0;
22+
public static const int StapleUniformBufferSet = 0;
1123
#endif
1224

13-
#ifdef STAPLE_FRAGMENT_SHADER
14-
[[vk::binding(0, 3)]]
15-
#endif
25+
[[vk::binding(0, StapleUniformBufferSet)]]
1626
public cbuffer StapleRenderData
1727
{
1828
public float4x4 world;
@@ -21,13 +31,5 @@ public cbuffer StapleRenderData
2131
public float time;
2232
};
2333

24-
#ifdef SKINNING
25-
# ifdef STAPLE_VERTEX_SHADER
26-
[[vk::binding(STAPLE_SKINNING_STAGE_INDEX, 1)]]
27-
# endif
28-
29-
# ifdef STAPLE_FRAGMENT_SHADER
30-
[[vk::binding(STAPLE_SKINNING_STAGE_INDEX, 3)]]
31-
# endif
34+
[[vk::binding(STAPLE_SKINNING_STAGE_INDEX, StapleUniformBufferSet)]]
3235
public StructuredBuffer<float4> StapleBoneMatrices;
33-
#endif

0 commit comments

Comments
 (0)