浏览代码

Water: Improve shaders

Mugen87 7 年之前
父节点
当前提交
39e30d10bd
共有 1 个文件被更改,包括 18 次插入4 次删除
  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' )