Initial commit
This commit is contained in:
58
engines/hpl1/engine/impl/shaders/hpl1_refract_water.fragment
Normal file
58
engines/hpl1/engine/impl/shaders/hpl1_refract_water.fragment
Normal file
@@ -0,0 +1,58 @@
|
||||
// Copyright 2006-2010 (C) - Frictional Games
|
||||
//
|
||||
// This file is part of HPL1 Engine
|
||||
//
|
||||
// For conditions of distribution and use, see copyright notice in LICENSE-shaders
|
||||
//
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
/// REFRACTION FRAGMENT PROGRAM /////////////////
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
in vec2 vUv; //in object space
|
||||
in vec3 vNormal;
|
||||
in vec3 vEyePos;
|
||||
in vec4 vColor;
|
||||
|
||||
OUTPUT
|
||||
|
||||
uniform sampler2DRect tex0; //screenMap
|
||||
uniform sampler2D tex1; //refractMap
|
||||
uniform sampler2D tex2; //diffuseMap
|
||||
|
||||
uniform vec2 screenSize;
|
||||
uniform float scale;
|
||||
uniform float t;
|
||||
|
||||
void main()
|
||||
{
|
||||
//t *= 1;
|
||||
vec2 uv_offset1 = vUv;
|
||||
uv_offset1.x += sin(t*0.8 + vUv.y*10.0)*0.04;
|
||||
uv_offset1.y += sin(t*0.8 + uv_offset1.x*10.0)*0.04;
|
||||
|
||||
vec3 offset1 = ((texture(tex1, uv_offset1)*2.0) - vec4(1.0)).xyz;
|
||||
|
||||
vec2 uv_offset2 = vUv;
|
||||
uv_offset2.x += sin(t*-2.6 + vUv.y*12.0)*0.03;
|
||||
uv_offset2.y += sin(t*-2.6 + uv_offset2.x*12.0)*0.03;
|
||||
|
||||
vec3 offset2 = ((texture(tex1, uv_offset2)*2.0) - vec4(1.0)).xyz;
|
||||
offset2.xy = -offset2.xy;
|
||||
|
||||
vec3 offset = normalize(offset1*0.7 + offset2*0.3);
|
||||
|
||||
//float fresnel = saturate(dot(normalize(vEyePos), normalize(vNormal)));
|
||||
//fresnel = (fresnel + 0.2)*0.8;
|
||||
|
||||
vec3 waterColor = texture(tex2, uv_offset1).xyz;
|
||||
|
||||
vec4 screenColor = texture2DRect(tex0, gl_FragCoord.xy + offset.xy * -scale);
|
||||
if(screenColor.w < 0.5) screenColor = texture2DRect(tex0, gl_FragCoord.xy);
|
||||
|
||||
outColor.xyz = screenColor.xyz * waterColor;
|
||||
|
||||
//outColor.y = uv.y+1 + uv_offset1.y;
|
||||
outColor.xyz *= clamp(dot(vec3(1.0/3.0, 1.0/3.0, 1.0/3.0), offset), 0.0, 1.0)*0.5 + 0.5;
|
||||
outColor.xyz += pow(clamp(dot(vec3(1.0/3.0, 1.0/3.0, 1.0/3.0), offset), 0.0, 1.0), 8.0)*5.0;
|
||||
}
|
||||
Reference in New Issue
Block a user