|
|
@@ -94,7 +94,8 @@ fn tsl_repeatWrapping( uv : vec2<f32>, dimension : vec2<u32> ) -> vec2<u32> {
|
|
|
biquadraticTexture: new CodeNode( `
|
|
|
fn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, level : i32 ) -> vec4f {
|
|
|
|
|
|
- let res = vec2f( textureDimensions( map, level ) );
|
|
|
+ let iRes = vec2i( textureDimensions( map, level ) );
|
|
|
+ let res = vec2f( iRes );
|
|
|
|
|
|
let uvScaled = coord * res;
|
|
|
let uvWrapping = ( ( uvScaled % res ) + res ) % res;
|
|
|
@@ -105,10 +106,10 @@ fn tsl_biquadraticTexture( map : texture_2d<f32>, coord : vec2f, level : i32 ) -
|
|
|
let iuv = floor( uv );
|
|
|
let f = fract( uv );
|
|
|
|
|
|
- let rg1 = textureLoad( map, vec2i( iuv + vec2( 0.5, 0.5 ) ), level );
|
|
|
- let rg2 = textureLoad( map, vec2i( iuv + vec2( 1.5, 0.5 ) ), level );
|
|
|
- let rg3 = textureLoad( map, vec2i( iuv + vec2( 0.5, 1.5 ) ), level );
|
|
|
- let rg4 = textureLoad( map, vec2i( iuv + vec2( 1.5, 1.5 ) ), level );
|
|
|
+ let rg1 = textureLoad( map, vec2i( iuv + vec2( 0.5, 0.5 ) ) % iRes, level );
|
|
|
+ let rg2 = textureLoad( map, vec2i( iuv + vec2( 1.5, 0.5 ) ) % iRes, level );
|
|
|
+ let rg3 = textureLoad( map, vec2i( iuv + vec2( 0.5, 1.5 ) ) % iRes, level );
|
|
|
+ let rg4 = textureLoad( map, vec2i( iuv + vec2( 1.5, 1.5 ) ) % iRes, level );
|
|
|
|
|
|
return mix( mix( rg1, rg2, f.x ), mix( rg3, rg4, f.x ), f.y );
|
|
|
|