123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /**
- * Normal map shader
- * - compute normals from heightmap
- */
- THREE.NormalMapShader = {
- uniforms: {
- 'heightMap': { value: null },
- 'resolution': { value: new THREE.Vector2( 512, 512 ) },
- 'scale': { value: new THREE.Vector2( 1, 1 ) },
- 'height': { value: 0.05 }
- },
- vertexShader: [
- 'varying vec2 vUv;',
- 'void main() {',
- ' vUv = uv;',
- ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',
- '}'
- ].join( '\n' ),
- fragmentShader: [
- 'uniform float height;',
- 'uniform vec2 resolution;',
- 'uniform sampler2D heightMap;',
- 'varying vec2 vUv;',
- 'void main() {',
- ' float val = texture2D( heightMap, vUv ).x;',
- ' float valU = texture2D( heightMap, vUv + vec2( 1.0 / resolution.x, 0.0 ) ).x;',
- ' float valV = texture2D( heightMap, vUv + vec2( 0.0, 1.0 / resolution.y ) ).x;',
- ' gl_FragColor = vec4( ( 0.5 * normalize( vec3( val - valU, val - valV, height ) ) + 0.5 ), 1.0 );',
- '}'
- ].join( '\n' )
- };
|