Browse Source

Water: Improve shaders

Mugen87 7 years ago
parent
commit
39e30d10bd
1 changed files with 18 additions and 4 deletions
  1. 18 4
      examples/js/objects/Water2.js

+ 18 - 4
examples/js/objects/Water2.js

@@ -72,10 +72,14 @@ THREE.Water = function ( width, height, options ) {
 	// material
 
 	this.material = new THREE.ShaderMaterial( {
-		uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
+		uniforms: THREE.UniformsUtils.merge( [
+			THREE.UniformsLib[ 'fog' ],
+			shader.uniforms
+		] ),
 		vertexShader: shader.vertexShader,
 		fragmentShader: shader.fragmentShader,
-		transparent: true
+		transparent: true,
+		fog: true
 	} );
 
 	if ( flowMap !== undefined ) {
@@ -242,6 +246,8 @@ THREE.Water.WaterShader = {
 
 	vertexShader: [
 
+		'#include <fog_pars_vertex>',
+
 		'uniform mat4 textureMatrix;',
 
 		'varying vec4 vCoord;',
@@ -256,7 +262,10 @@ THREE.Water.WaterShader = {
 		' vec4 worldPosition = modelMatrix * vec4( position, 1.0 );',
 		'	vToEye = cameraPosition - worldPosition.xyz;',
 
-		'	gl_Position = projectionMatrix * viewMatrix * worldPosition;',
+		'	vec4 mvPosition =  viewMatrix * worldPosition;', // used in fog_vertex
+		'	gl_Position = projectionMatrix * mvPosition;',
+
+		' #include <fog_vertex>',
 
 		'}'
 
@@ -264,6 +273,8 @@ THREE.Water.WaterShader = {
 
 	fragmentShader: [
 
+		'#include <fog_pars_fragment>',
+
 		'uniform sampler2D tReflectionMap;',
 		'uniform sampler2D tRefractionMap;',
 		'uniform sampler2D tNormalMap0;',
@@ -277,7 +288,6 @@ THREE.Water.WaterShader = {
 
 		'uniform vec3 color;',
 		'uniform float reflectivity;',
-
 		'uniform vec4 config;',
 
 		'varying vec4 vCoord;',
@@ -327,6 +337,10 @@ THREE.Water.WaterShader = {
 		// multiply water color with the mix of both textures
 		'	gl_FragColor = vec4( color, 1.0 ) * mix( refractColor, reflectColor, reflectance );',
 
+		'#include <tonemapping_fragment>',
+		'#include <encodings_fragment>',
+		'#include <fog_fragment>',
+
 		'}'
 
 	].join( '\n' )