Procházet zdrojové kódy

Correct Normal State + Attach Local

NasimiAsl před 8 roky
rodič
revize
59e855d62c
1 změnil soubory, kde provedl 15 přidání a 10 odebrání
  1. 15 10
      materialsLibrary/src/custom/babylon.customMaterial.ts

+ 15 - 10
materialsLibrary/src/custom/babylon.customMaterial.ts

@@ -10,9 +10,7 @@ module BABYLON {
 
 
        constructor(){
        constructor(){
 
 
-       }
-
-     
+       }  
   }
   }
 
 
   export class  ShaderSpecialParts{
   export class  ShaderSpecialParts{
@@ -51,9 +49,7 @@ module BABYLON {
             
             
             this.FragmentStore = "#include<__decl__defaultFragment>\n\
             this.FragmentStore = "#include<__decl__defaultFragment>\n\
 #[Fragment_Begin]\n\
 #[Fragment_Begin]\n\
-#ifdef BUMP\n\
 #extension GL_OES_standard_derivatives : enable\n\
 #extension GL_OES_standard_derivatives : enable\n\
-#endif\n\
 #ifdef LOGARITHMICDEPTH\n\
 #ifdef LOGARITHMICDEPTH\n\
 #extension GL_EXT_frag_depth : enable\n\
 #extension GL_EXT_frag_depth : enable\n\
 #endif\n\
 #endif\n\
@@ -64,7 +60,10 @@ uniform vec3 vAmbientColor;\n\
 \n\
 \n\
 varying vec3 vPositionW;\n\
 varying vec3 vPositionW;\n\
 #ifdef NORMAL\n\
 #ifdef NORMAL\n\
-varying vec3 vNormalW;\n\
+varying vec3 vNormalW_helper;\n\
+varying vec3 localNormal;\n\
+varying vec3 localPosition;\n\
+vec3 vNormalW;\n\
 #endif\n\
 #endif\n\
 #ifdef VERTEXCOLOR\n\
 #ifdef VERTEXCOLOR\n\
 varying vec4 vColor;\n\
 varying vec4 vColor;\n\
@@ -142,6 +141,7 @@ varying vec3 vDirectionW;\n\
 \n\
 \n\
 void main(void) {\n\
 void main(void) {\n\
 \n\
 \n\
+vNormalW = vNormalW_helper;\n\
 #[Fragment_MainBegin]\n\
 #[Fragment_MainBegin]\n\
 \n\
 \n\
 #include<clipPlaneFragment>\n\
 #include<clipPlaneFragment>\n\
@@ -392,9 +392,11 @@ varying vec2 vSpecularUV;\n\
 varying vec2 vBumpUV;\n\
 varying vec2 vBumpUV;\n\
 #endif\n\
 #endif\n\
 \n\
 \n\
+varying vec3 localPosition;\n\
 varying vec3 vPositionW;\n\
 varying vec3 vPositionW;\n\
 #ifdef NORMAL\n\
 #ifdef NORMAL\n\
-varying vec3 vNormalW;\n\
+varying vec3 vNormalW_helper;\n\
+varying vec3 localNormal;\n\
 #endif\n\
 #endif\n\
 #ifdef VERTEXCOLOR\n\
 #ifdef VERTEXCOLOR\n\
 varying vec4 vColor;\n\
 varying vec4 vColor;\n\
@@ -433,6 +435,7 @@ vPositionUVW=positionUpdated;\n\
 #include<instancesVertex>\n\
 #include<instancesVertex>\n\
 #include<bonesVertex>\n\
 #include<bonesVertex>\n\
 \n\
 \n\
+localPosition = positionUpdated;\n\
 #[Vertex_Before_PositionUpdated]\n\
 #[Vertex_Before_PositionUpdated]\n\
 \n\
 \n\
 gl_Position=viewProjection*finalWorld*vec4(positionUpdated,1.0);\n\
 gl_Position=viewProjection*finalWorld*vec4(positionUpdated,1.0);\n\
@@ -442,7 +445,8 @@ vPositionW=vec3(worldPos);\n\
 \n\
 \n\
 #[Vertex_Before_NormalUpdated]\n\
 #[Vertex_Before_NormalUpdated]\n\
 \n\
 \n\
-vNormalW=normalize(vec3(finalWorld*vec4(normalUpdated,0.0)));\n\
+localNormal = normalUpdated;\n\
+vNormalW_helper=normalize(vec3(finalWorld*vec4(normalUpdated,0.0)));\n\
 #endif\n\
 #endif\n\
 #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\n\
 #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED)\n\
 vDirectionW=normalize(vec3(finalWorld*vec4(positionUpdated,0.0)));\n\
 vDirectionW=normalize(vec3(finalWorld*vec4(positionUpdated,0.0)));\n\
@@ -548,7 +552,7 @@ vColor=color;\n\
 
 
    } 
    } 
 
 
-    export class CustomMaterial extends StandardMaterial {
+    export class CustomMaterial  extends StandardMaterial {
          public static ShaderIndexer = 1;
          public static ShaderIndexer = 1;
          public CustomParts :  ShaderSpecialParts;
          public CustomParts :  ShaderSpecialParts;
          public ShaderVersion : CustomShaderStructure ;
          public ShaderVersion : CustomShaderStructure ;
@@ -592,7 +596,8 @@ vColor=color;\n\
              return arr;
              return arr;
          }
          }
          public Builder(shaderName: string, uniforms: string[], uniformBuffers: string[], samplers: string[], defines: StandardMaterialDefines) : string {
          public Builder(shaderName: string, uniforms: string[], uniformBuffers: string[], samplers: string[], defines: StandardMaterialDefines) : string {
-          
+            
+           
             CustomMaterial.ShaderIndexer++;
             CustomMaterial.ShaderIndexer++;
             var name = name+"custom_"+CustomMaterial.ShaderIndexer;
             var name = name+"custom_"+CustomMaterial.ShaderIndexer;