Quellcode durchsuchen

Fixed fur material : checking gl version in order to « texture2D » or « texture » in vertex shader
Added max vertex texture units in capacities

Julien Moreau-Mathis vor 8 Jahren
Ursprung
Commit
3083a28d1f

Datei-Diff unterdrückt, da er zu groß ist
+ 4 - 4
dist/preview release/materialsLibrary/babylon.furMaterial.js


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 1
dist/preview release/materialsLibrary/babylon.furMaterial.min.js


+ 1 - 1
materialsLibrary/src/fur/babylon.furMaterial.ts

@@ -173,7 +173,7 @@ module BABYLON {
                         this._defines.DIFFUSE = true;
                         this._defines.DIFFUSE = true;
                     }
                     }
                 } 
                 } 
-                if (this.heightTexture) {
+                if (this.heightTexture && engine.getCaps().maxVertexTextureImageUnits) {
                     if (!this.heightTexture.isReady()) {
                     if (!this.heightTexture.isReady()) {
                         return false;
                         return false;
                     } else {
                     } else {

+ 5 - 0
materialsLibrary/src/fur/fur.fragment.fx

@@ -97,9 +97,14 @@ void main(void) {
 	// Lighting
 	// Lighting
 	vec3 diffuseBase = vec3(0., 0., 0.);
 	vec3 diffuseBase = vec3(0., 0., 0.);
     lightingInfo info;
     lightingInfo info;
+
 	float shadow = 1.;
 	float shadow = 1.;
 	float glossiness = 0.;
 	float glossiness = 0.;
 
 
+#ifdef SPECULARTERM
+	vec3 specularBase = vec3(0., 0., 0.);
+#endif
+
 	#include<lightFragment>[0..maxSimultaneousLights]
 	#include<lightFragment>[0..maxSimultaneousLights]
 
 
 #ifdef VERTEXALPHA
 #ifdef VERTEXALPHA

+ 6 - 2
materialsLibrary/src/fur/fur.vertex.fx

@@ -76,8 +76,12 @@ void main(void) {
 
 
 //FUR
 //FUR
 float r = Rand(position);
 float r = Rand(position);
-#ifdef HEIGHTMAP	
-	vfur_length = furLength * texture2D(heightTexture, uv).rgb.x;
+#ifdef HEIGHTMAP
+	#if __VERSION__ > 100
+	vfur_length = furLength * texture(heightTexture, uv).x;
+	#else
+	vfur_length = furLength * texture2D(heightTexture, uv).r;
+	#endif
 #else	
 #else	
 	vfur_length = (furLength * r);
 	vfur_length = (furLength * r);
 #endif
 #endif

+ 2 - 0
src/babylon.engine.ts

@@ -157,6 +157,7 @@
 
 
     export class EngineCapabilities {
     export class EngineCapabilities {
         public maxTexturesImageUnits: number;
         public maxTexturesImageUnits: number;
+        public maxVertexTextureImageUnits: number;
         public maxTextureSize: number;
         public maxTextureSize: number;
         public maxCubemapTextureSize: number;
         public maxCubemapTextureSize: number;
         public maxRenderTextureSize: number;
         public maxRenderTextureSize: number;
@@ -622,6 +623,7 @@
             this._isStencilEnable = options.stencil;
             this._isStencilEnable = options.stencil;
             this._caps = new EngineCapabilities();
             this._caps = new EngineCapabilities();
             this._caps.maxTexturesImageUnits = this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS);
             this._caps.maxTexturesImageUnits = this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS);
+            this._caps.maxVertexTextureImageUnits = this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);
             this._caps.maxTextureSize = this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE);
             this._caps.maxTextureSize = this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE);
             this._caps.maxCubemapTextureSize = this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE);
             this._caps.maxCubemapTextureSize = this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE);
             this._caps.maxRenderTextureSize = this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE);
             this._caps.maxRenderTextureSize = this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE);