Variable furVertexShaderConst
furVertexShader: "\n uniform float layerOffset;\n uniform float spacing;\n uniform float time;\n \n varying vec2 vUv;\n varying float vLayer;\n varying vec3 vNormal;\n \n void main() {\n vUv = uv;\n vLayer = layerOffset;\n vNormal = normalize(normalMatrix * normal);\n \n // Extrude along normal\n vec3 pos = position + normal * (layerOffset * spacing);\n \n // Enhanced wind effect on fur tips - more natural movement\n if (layerOffset > 0.3) {\n float windStrength = layerOffset * layerOffset; // Quadratic for more tip movement\n pos.x += sin(time * 1.5 + position.y * 3.0 + position.z * 2.0) * 0.008 * windStrength;\n pos.z += cos(time * 1.8 + position.x * 2.5 + position.y * 3.0) * 0.006 * windStrength;\n }\n \n // Gravity droop - more pronounced at tips\n pos.y -= pow(layerOffset, 2.5) * 0.04;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n }\n" = ...
Fur shell shader - layered alpha-tested shells for volumetric fur effect Enhanced with improved wind animation and mobile optimization
Lifted from Otterfall procedural rendering system.