瀏覽代碼

ensure that particles also use map encodings.

Ben Houston 9 年之前
父節點
當前提交
52bf6c6e97

+ 3 - 2
src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl

@@ -1,5 +1,6 @@
 #ifdef USE_MAP
 #ifdef USE_MAP
 
 
-	diffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );
-
+	vec4 mapTexel= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );
+	diffuseColor *= mapTexelToLinear( mapTexel );
+	
 #endif
 #endif

+ 6 - 0
src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl

@@ -2,5 +2,11 @@
 
 
 	uniform vec4 offsetRepeat;
 	uniform vec4 offsetRepeat;
 	uniform sampler2D map;
 	uniform sampler2D map;
+	
+	vec4 mapTexelToLinear( vec4 value ) {
+		#define MACRO_DECODE MAP_ENCODING
+			#include <encoding_template>
+		#undef MACRO_DECODE
+	}
 
 
 #endif
 #endif

+ 2 - 0
src/renderers/shaders/ShaderLib.js

@@ -22,6 +22,7 @@ THREE.ShaderLib = {
 		vertexShader: [
 		vertexShader: [
 
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "common" ],
+			THREE.ShaderChunk[ "encodings" ],
 			THREE.ShaderChunk[ "uv_pars_vertex" ],
 			THREE.ShaderChunk[ "uv_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
@@ -635,6 +636,7 @@ THREE.ShaderLib = {
 			"uniform float opacity;",
 			"uniform float opacity;",
 
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "common" ],
+			THREE.ShaderChunk[ "encodings" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
 			THREE.ShaderChunk[ "map_particle_pars_fragment" ],
 			THREE.ShaderChunk[ "map_particle_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],