Skip to content

Commit a2f2edf

Browse files
committed
Fix uniforms issue on Linux
1 parent 93a593e commit a2f2edf

File tree

4 files changed

+8
-24
lines changed

4 files changed

+8
-24
lines changed

chapter-17/resources/shaders/scene.frag

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ uniform SpotLight spotLights[MAX_SPOT_LIGHTS];
7474
uniform DirLight dirLight;
7575
uniform Fog fog;
7676
uniform CascadeShadow cascadeshadows[NUM_CASCADES];
77-
uniform sampler2D shadowMap_0;
78-
uniform sampler2D shadowMap_1;
79-
uniform sampler2D shadowMap_2;
77+
uniform sampler2D shadowMap[NUM_CASCADES];
8078

8179
vec4 calcAmbient(AmbientLight ambientLight, vec4 ambient) {
8280
return vec4(ambientLight.factor * ambientLight.color, 1) * ambient;
@@ -156,13 +154,7 @@ float textureProj(vec4 shadowCoord, vec2 offset, int idx) {
156154

157155
if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0) {
158156
float dist = 0.0;
159-
if (idx == 0) {
160-
dist = texture(shadowMap_0, vec2(shadowCoord.xy + offset)).r;
161-
} else if (idx == 1) {
162-
dist = texture(shadowMap_1, vec2(shadowCoord.xy + offset)).r;
163-
} else {
164-
dist = texture(shadowMap_2, vec2(shadowCoord.xy + offset)).r;
165-
}
157+
dist = texture(shadowMap[idx], vec2(shadowCoord.xy + offset)).r;
166158
if (shadowCoord.w > 0 && dist < shadowCoord.z - BIAS) {
167159
shadow = SHADOW_FACTOR;
168160
}

chapter-17/src/main/java/org/lwjglb/engine/graph/SceneRender.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private void createUniforms() {
7474
uniformsMap.createUniform("fog.density");
7575

7676
for (int i = 0; i < CascadeShadow.SHADOW_MAP_CASCADE_COUNT; i++) {
77-
uniformsMap.createUniform("shadowMap_" + i);
77+
uniformsMap.createUniform("shadowMap[" + i + "]");
7878
uniformsMap.createUniform("cascadeshadows[" + i + "]" + ".projViewMatrix");
7979
uniformsMap.createUniform("cascadeshadows[" + i + "]" + ".splitDistance");
8080
}
@@ -102,7 +102,7 @@ public void render(Scene scene, ShadowRender shadowRender) {
102102
int start = 2;
103103
List<CascadeShadow> cascadeShadows = shadowRender.getCascadeShadows();
104104
for (int i = 0; i < CascadeShadow.SHADOW_MAP_CASCADE_COUNT; i++) {
105-
uniformsMap.setUniform("shadowMap_" + i, start + i);
105+
uniformsMap.setUniform("shadowMap[" + i + "]", start + i);
106106
CascadeShadow cascadeShadow = cascadeShadows.get(i);
107107
uniformsMap.setUniform("cascadeshadows[" + i + "]" + ".projViewMatrix", cascadeShadow.getProjViewMatrix());
108108
uniformsMap.setUniform("cascadeshadows[" + i + "]" + ".splitDistance", cascadeShadow.getSplitDistance());

chapter-18/resources/shaders/scene.frag

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ uniform SpotLight spotLights[MAX_SPOT_LIGHTS];
7474
uniform DirLight dirLight;
7575
uniform Fog fog;
7676
uniform CascadeShadow cascadeshadows[NUM_CASCADES];
77-
uniform sampler2D shadowMap_0;
78-
uniform sampler2D shadowMap_1;
79-
uniform sampler2D shadowMap_2;
77+
uniform sampler2D shadowMap[NUM_CASCADES];
8078
uniform int selected;
8179

8280
vec4 calcAmbient(AmbientLight ambientLight, vec4 ambient) {
@@ -157,13 +155,7 @@ float textureProj(vec4 shadowCoord, vec2 offset, int idx) {
157155

158156
if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0) {
159157
float dist = 0.0;
160-
if (idx == 0) {
161-
dist = texture(shadowMap_0, vec2(shadowCoord.xy + offset)).r;
162-
} else if (idx == 1) {
163-
dist = texture(shadowMap_1, vec2(shadowCoord.xy + offset)).r;
164-
} else {
165-
dist = texture(shadowMap_2, vec2(shadowCoord.xy + offset)).r;
166-
}
158+
dist = texture(shadowMap[idx], vec2(shadowCoord.xy + offset)).r;
167159
if (shadowCoord.w > 0 && dist < shadowCoord.z - BIAS) {
168160
shadow = SHADOW_FACTOR;
169161
}

chapter-18/src/main/java/org/lwjglb/engine/graph/SceneRender.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private void createUniforms() {
7474
uniformsMap.createUniform("fog.density");
7575

7676
for (int i = 0; i < CascadeShadow.SHADOW_MAP_CASCADE_COUNT; i++) {
77-
uniformsMap.createUniform("shadowMap_" + i);
77+
uniformsMap.createUniform("shadowMap[" + i + "]");
7878
uniformsMap.createUniform("cascadeshadows[" + i + "]" + ".projViewMatrix");
7979
uniformsMap.createUniform("cascadeshadows[" + i + "]" + ".splitDistance");
8080
}
@@ -103,7 +103,7 @@ public void render(Scene scene, ShadowRender shadowRender) {
103103
int start = 2;
104104
List<CascadeShadow> cascadeShadows = shadowRender.getCascadeShadows();
105105
for (int i = 0; i < CascadeShadow.SHADOW_MAP_CASCADE_COUNT; i++) {
106-
uniformsMap.setUniform("shadowMap_" + i, start + i);
106+
uniformsMap.setUniform("shadowMap[" + i + "]", start + i);
107107
CascadeShadow cascadeShadow = cascadeShadows.get(i);
108108
uniformsMap.setUniform("cascadeshadows[" + i + "]" + ".projViewMatrix", cascadeShadow.getProjViewMatrix());
109109
uniformsMap.setUniform("cascadeshadows[" + i + "]" + ".splitDistance", cascadeShadow.getSplitDistance());

0 commit comments

Comments
 (0)