Browse Source

last shaders

Garrett Johnson 5 năm trước cách đây
mục cha
commit
019aad68a5

+ 4 - 2
src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js

@@ -3,25 +3,27 @@ export default /* glsl */`
 
 	vec4 plane;
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
 
 		plane = clippingPlanes[ i ];
 		if ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;
 
 	}
+	#pragma unroll_loop_end
 
 	#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
 
 		bool clipped = true;
 
-		#pragma unroll_loop
+		#pragma unroll_loop_start
 		for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
 
 			plane = clippingPlanes[ i ];
 			clipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;
 
 		}
+		#pragma unroll_loop_end
 
 		if ( clipped ) discard;
 

+ 8 - 4
src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js

@@ -25,7 +25,7 @@ vec3 directLightColor_Diffuse;
 
 #if NUM_POINT_LIGHTS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
 
 		getPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );
@@ -42,12 +42,13 @@ vec3 directLightColor_Diffuse;
 		#endif
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
 #if NUM_SPOT_LIGHTS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
 
 		getSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );
@@ -63,6 +64,7 @@ vec3 directLightColor_Diffuse;
 
 		#endif
 	}
+	#pragma unroll_loop_end
 
 #endif
 
@@ -80,7 +82,7 @@ vec3 directLightColor_Diffuse;
 
 #if NUM_DIR_LIGHTS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
 
 		getDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );
@@ -97,12 +99,13 @@ vec3 directLightColor_Diffuse;
 		#endif
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
 #if NUM_HEMI_LIGHTS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
 
 		vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );
@@ -114,6 +117,7 @@ vec3 directLightColor_Diffuse;
 		#endif
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 `;

+ 6 - 3
src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js

@@ -3,34 +3,37 @@ export default /* glsl */`
 
 	#if NUM_DIR_LIGHT_SHADOWS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
 
 		vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 
 	#if NUM_SPOT_LIGHT_SHADOWS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
 
 		vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 
 	#if NUM_POINT_LIGHT_SHADOWS > 0
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
 
 		vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 

+ 6 - 3
src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js

@@ -9,13 +9,14 @@ float getShadowMask() {
 
 	DirectionalLightShadow directionalLight;
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
 
 		directionalLight = directionalLightShadows[ i ];
 		shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 
@@ -23,13 +24,14 @@ float getShadowMask() {
 
 	SpotLightShadow spotLight;
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
 
 		spotLight = spotLightShadows[ i ];
 		shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 
@@ -37,13 +39,14 @@ float getShadowMask() {
 
 	PointLightShadow pointLight;
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
 
 		pointLight = pointLightShadows[ i ];
 		shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
 
 	}
+	#pragma unroll_loop_end
 
 	#endif