浏览代码

Move some code

Popov72 5 年之前
父节点
当前提交
ab688d518e

+ 1 - 29
src/Materials/Node/Blocks/Fragment/PBR/pbrMetallicRoughnessBlock.ts

@@ -674,36 +674,8 @@ export class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
         }
 
         // _____________________________ Reflection _______________________________________
-        if (reflectionBlock && reflectionBlock.texture) {
-            state.compilationString += `
-                struct reflectionOutParams
-                {
-                    vec4 environmentRadiance;
-                    vec3 environmentIrradiance;
-                #ifdef ${reflectionBlock._define3DName}
-                    vec3 reflectionCoords;
-                #else
-                    vec2 reflectionCoords;
-                #endif
-                #ifdef SS_TRANSLUCENCY
-                    #ifdef USESPHERICALFROMREFLECTIONMAP
-                        #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
-                            vec3 irradianceVector;
-                        #endif
-                    #endif
-                #endif
-                };
-            `;
-
-            state.compilationString += `reflectionOutParams reflectionOut;\r\n`;
+        if (reflectionBlock && reflectionBlock.hasTexture) {
             state.compilationString += reflectionBlock.getCode(state, anisotropyBlock ? "anisotropicOut.anisotropicNormal" : "normalW", "environmentRadiance", "irradianceVector", "environmentIrradiance");
-            state.compilationString += `
-                #ifdef SS_TRANSLUCENCY
-                    reflectionOut.irradianceVector = irradianceVector;
-                #endif
-                reflectionOut.environmentRadiance = environmentRadiance;
-                reflectionOut.environmentIrradiance = environmentIrradiance;
-                reflectionOut.reflectionCoords = ${reflectionBlock._reflectionCoordsName};\r\n`;
         }
 
         // ___________________ Compute Reflectance aka R0 F0 info _________________________

+ 29 - 0
src/Materials/Node/Blocks/Fragment/PBR/reflectionBlock.ts

@@ -252,6 +252,27 @@ export class ReflectionBlock extends ReflectionTextureBaseBlock {
     public getCode(state: NodeMaterialBuildState, normalVarName: string, finalColorVarName: string, finalIrradianceVector: string, finalIrradianceVarName: string): string {
         let code = "";
 
+        code += `
+            struct reflectionOutParams
+            {
+                vec4 environmentRadiance;
+                vec3 environmentIrradiance;
+            #ifdef ${this._define3DName}
+                vec3 reflectionCoords;
+            #else
+                vec2 reflectionCoords;
+            #endif
+            #ifdef SS_TRANSLUCENCY
+                #ifdef USESPHERICALFROMREFLECTIONMAP
+                    #if !defined(NORMAL) || !defined(USESPHERICALINVERTEX)
+                        vec3 irradianceVector;
+                    #endif
+                #endif
+            #endif
+            };\r\n`;
+
+        code += `reflectionOutParams reflectionOut;\r\n`;
+
         this.handleFragmentSideInits(state);
 
         state._emitFunctionFromInclude("harmonicsFunctions", `//${this.name}`, {
@@ -324,6 +345,14 @@ export class ReflectionBlock extends ReflectionTextureBaseBlock {
                 #endif
             #endif\r\n`;
 
+        code += `
+            #ifdef SS_TRANSLUCENCY
+                reflectionOut.irradianceVector = irradianceVector;
+            #endif
+            reflectionOut.environmentRadiance = environmentRadiance;
+            reflectionOut.environmentIrradiance = environmentIrradiance;
+            reflectionOut.reflectionCoords = ${this._reflectionCoordsName};\r\n`;
+
         return code;
     }