Browse Source

Doing a hard compare instead of using step for blending factors

Lukas Joergensen 11 years ago
parent
commit
53f241974b

+ 5 - 2
Templates/Empty/game/shaders/common/terrain/terrain.hlsl

@@ -32,9 +32,12 @@ float calcBlend( float texId, float2 layerCoord, float layerSize, float4 layerSa
    float4 diff = saturate( abs( layerSample - texId ) );
    float noBlend = any( 1 - diff );
 
-   // Use step to see if any of the layer samples 
+   // Check if any of the layer samples 
    // match the current texture id.
-   float4 factors = step( texId, layerSample );
+   float4 factors = 0;
+   for(int i = 0; i < 4; i++)
+      if(layerSample[i] == texId)
+         factors[i] = 1;
 
    // This is a custom bilinear filter.
 

+ 5 - 2
Templates/Full/game/shaders/common/terrain/terrain.hlsl

@@ -32,9 +32,12 @@ float calcBlend( float texId, float2 layerCoord, float layerSize, float4 layerSa
    float4 diff = saturate( abs( layerSample - texId ) );
    float noBlend = any( 1 - diff );
 
-   // Use step to see if any of the layer samples 
+   // Check if any of the layer samples 
    // match the current texture id.
-   float4 factors = step( texId, layerSample );
+   float4 factors = 0;
+   for(int i = 0; i < 4; i++)
+      if(layerSample[i] == texId)
+         factors[i] = 1;
 
    // This is a custom bilinear filter.