提交 b9687e3a 编写于 作者: W WestLangley

Corrected handling of flip-sided materials

上级 96ab46a8
......@@ -4565,7 +4565,8 @@ THREE.WebGLRenderer = function ( parameters ) {
metal: material.metal,
perPixel: material.perPixel,
wrapAround: material.wrapAround,
doubleSided: material.side === THREE.DoubleSide
doubleSided: material.side === THREE.DoubleSide,
flipSided: material.side === THREE.BackSide
};
......@@ -5838,6 +5839,7 @@ THREE.WebGLRenderer = function ( parameters ) {
parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
parameters.wrapAround ? "#define WRAP_AROUND" : "",
parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
parameters.flipSided ? "#define FLIP_SIDED" : "",
parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
parameters.shadowMapSoft ? "#define SHADOWMAP_SOFT" : "",
......@@ -5933,6 +5935,7 @@ THREE.WebGLRenderer = function ( parameters ) {
parameters.perPixel ? "#define PHONG_PER_PIXEL" : "",
parameters.wrapAround ? "#define WRAP_AROUND" : "",
parameters.doubleSided ? "#define DOUBLE_SIDED" : "",
parameters.flipSided ? "#define FLIP_SIDED" : "",
parameters.shadowMapEnabled ? "#define USE_SHADOWMAP" : "",
parameters.shadowMapSoft ? "#define SHADOWMAP_SOFT" : "",
......
......@@ -112,7 +112,15 @@ THREE.ShaderChunk = {
"#else",
"vec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );",
"#ifdef FLIP_SIDED",
"vec4 cubeColor = textureCube( envMap, -vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );",
"#else",
"vec4 cubeColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );",
"#endif",
"#endif",
......@@ -459,7 +467,16 @@ THREE.ShaderChunk = {
"#endif",
"transformedNormal = normalize( transformedNormal );",
"#ifdef FLIP_SIDED",
"transformedNormal = normalize( -transformedNormal );",
"#else",
"transformedNormal = normalize( transformedNormal );",
"#endif",
"#if MAX_DIR_LIGHTS > 0",
......@@ -819,6 +836,12 @@ THREE.ShaderChunk = {
"vec3 normal = normalize( vNormal );",
"vec3 viewPosition = normalize( vViewPosition );",
"#ifdef FLIP_SIDED",
"normal = -normal;",
"#endif",
"#ifdef DOUBLE_SIDED",
"normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册