فهرست منبع

More shader updates

Garrett Johnson 5 سال پیش
والد
کامیت
e11a540c7e
3فایلهای تغییر یافته به همراه20 افزوده شده و 10 حذف شده
  1. 2 1
      examples/js/shaders/TranslucentShader.js
  2. 12 6
      examples/jsm/csm/Shader.js
  3. 6 3
      examples/jsm/shaders/TranslucentShader.js

+ 2 - 1
examples/js/shaders/TranslucentShader.js

@@ -150,7 +150,7 @@ THREE.TranslucentShader = {
 
 		"		DirectionalLight directionalLight;",
 
-		"		#pragma unroll_loop",
+		"		#pragma unroll_loop_start",
 		"		for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {",
 		"			directionalLight = directionalLights[ i ];",
 		"			getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );",
@@ -165,6 +165,7 @@ THREE.TranslucentShader = {
 		"			RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);",
 		"			#endif",
 		"		}",
+		"		#pragma unroll_loop_end",
 
 		"	#endif",
 

+ 12 - 6
examples/jsm/csm/Shader.js

@@ -27,7 +27,7 @@ IncidentLight directLight;
 	PointLightShadow pointLightShadow;
 	#endif
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
 
 		pointLight = pointLights[ i ];
@@ -42,6 +42,7 @@ IncidentLight directLight;
 		RE_Direct( directLight, geometry, material, reflectedLight );
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
@@ -52,7 +53,7 @@ IncidentLight directLight;
 	SpotLightShadow spotLightShadow;
 	#endif
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
 
 		spotLight = spotLights[ i ];
@@ -67,6 +68,7 @@ IncidentLight directLight;
 		RE_Direct( directLight, geometry, material, reflectedLight );
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
@@ -132,7 +134,7 @@ IncidentLight directLight;
 	#pragma unroll_loop_end
 	#else
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
 
 		directionalLight = directionalLights[ i ];
@@ -148,6 +150,7 @@ IncidentLight directLight;
 		if(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && (linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1)) RE_Direct( directLight, geometry, material, reflectedLight );
 
 	}
+	#pragma unroll_loop_end
 
 	#endif
 
@@ -161,7 +164,7 @@ IncidentLight directLight;
 	DirectionalLightShadow directionalLightShadow;
 	#endif
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
 
 		directionalLight = directionalLights[ i ];
@@ -176,6 +179,7 @@ IncidentLight directLight;
 		RE_Direct( directLight, geometry, material, reflectedLight );
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
@@ -183,13 +187,14 @@ IncidentLight directLight;
 
 	RectAreaLight rectAreaLight;
 
-	#pragma unroll_loop
+	#pragma unroll_loop_start
 	for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
 
 		rectAreaLight = rectAreaLights[ i ];
 		RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );
 
 	}
+	#pragma unroll_loop_end
 
 #endif
 
@@ -203,12 +208,13 @@ IncidentLight directLight;
 
 	#if ( NUM_HEMI_LIGHTS > 0 )
 
-		#pragma unroll_loop
+		#pragma unroll_loop_start
 		for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
 
 			irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );
 
 		}
+		#pragma unroll_loop_end
 
 	#endif
 

+ 6 - 3
examples/jsm/shaders/TranslucentShader.js

@@ -134,7 +134,7 @@ var TranslucentShader = {
 
 		"		PointLight pointLight;",
 
-		"		#pragma unroll_loop",
+		"		#pragma unroll_loop_start",
 		"		for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {",
 		"		 	pointLight = pointLights[ i ];",
 		"		 	getPointDirectLightIrradiance( pointLight, geometry, directLight );",
@@ -149,6 +149,7 @@ var TranslucentShader = {
 		"			RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);",
 		"			#endif",
 		"		}",
+		"		#pragma unroll_loop_end",
 
 		"		#endif",
 
@@ -156,7 +157,7 @@ var TranslucentShader = {
 
 		"		DirectionalLight directionalLight;",
 
-		"		#pragma unroll_loop",
+		"		#pragma unroll_loop_start",
 		"		for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {",
 		"			directionalLight = directionalLights[ i ];",
 		"			getDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );",
@@ -171,6 +172,7 @@ var TranslucentShader = {
 		"			RE_Direct_Scattering(directLight, vUv, geometry, reflectedLight);",
 		"			#endif",
 		"		}",
+		"		#pragma unroll_loop_end",
 
 		"	#endif",
 
@@ -180,12 +182,13 @@ var TranslucentShader = {
 
 		"		#if ( NUM_HEMI_LIGHTS > 0 )",
 
-		"			#pragma unroll_loop",
+		"			#pragma unroll_loop_start",
 		"			for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {",
 
 		"				irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );",
 
 		"			}",
+		"			#pragma unroll_loop_end",
 
 		"		#endif",