1234567891011121314151617181920212223242526272829303132 |
- void AdvancedParallax_float(
- // Base inputs
- Texture2D textureHeight,
- float2 uv,
- float Parallax,
- // Fixed inputs
- SamplerState samplerTex,
- float3 viewDirTS,
- // Outputs
- out float2 ParallaxUV,
- out float Height
- ) {
- // Parallax
- float3 v = viewDirTS;
- v.z += 0.42;
- v.xy /= v.z;
- float halfParallax = Parallax * 0.5f;
- float parallax = SAMPLE_TEXTURE2D(textureHeight, samplerTex, uv).g * Parallax - halfParallax;
- Height = parallax;
- float2 offset1 = parallax * v.xy;
- // Calculate 2nd height
- parallax = SAMPLE_TEXTURE2D(textureHeight, samplerTex, uv + offset1).g * Parallax - halfParallax;
- Height += parallax;
- float2 offset2 = parallax * v.xy;
- // Final UVs
- uv += (offset1 + offset2) * 0.5f;
- ParallaxUV = uv;
- }
|