From 69654009634f2f5286d1f72b1285430d8af131ba Mon Sep 17 00:00:00 2001 From: Markus Klepp Date: Sun, 19 Mar 2023 10:56:29 +0100 Subject: [PATCH] Replace default displacement shader from three.js --- source/nodes/MapHeightNodeShader.ts | 34 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/source/nodes/MapHeightNodeShader.ts b/source/nodes/MapHeightNodeShader.ts index 0057957..9e589f1 100644 --- a/source/nodes/MapHeightNodeShader.ts +++ b/source/nodes/MapHeightNodeShader.ts @@ -74,25 +74,23 @@ export class MapHeightNodeShader extends MapHeightNode shader.uniforms[i] = material.userData[i]; } - // Vertex variables - shader.vertexShader = - ` - uniform sampler2D heightMap; - ` + shader.vertexShader; - - // Vertex depth logic - shader.vertexShader = shader.vertexShader.replace('#include ', ` - #include - - // Calculate height of the title + // custom displacement logic variables + shader.vertexShader = shader.vertexShader.replace( + "#include ", + "uniform sampler2D heightMap;" + ); + + // custom displacement logic + shader.vertexShader = shader.vertexShader.replace( + "#include ", + ` + // custom displacement map vec4 _theight = texture2D(heightMap, vUv); - float _height = ((_theight.r * 255.0 * 65536.0 + _theight.g * 255.0 * 256.0 + _theight.b * 255.0) * 0.1) - 10000.0; - vec3 _transformed = position + _height * normal; - - // Vertex position based on height - gl_Position = projectionMatrix * modelViewMatrix * vec4(_transformed, 1.0); - `); - }; + float _height = (_theight.r * 255.0 * 256.0 + _theight.g * 255.0 + _theight.b * 255.0 / 256.0) - 32768.0; + transformed += normalize( objectNormal ) * _height; + ` + ); + }; return material; }