X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;ds=sidebyside;f=shaders%2Fwater.h;fp=shaders%2Fwater.h;h=e334a5c74e38d635a6b519261f69369104a6cde7;hb=1f0e3292c021e8263716e5f4544a1efcedf3f03d;hp=ca3ab47340ffdb343247e88a65d8c3d312083aa3;hpb=be6707a307bfeec1b45cca8b3fb647e81262be87;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/water.h b/shaders/water.h index ca3ab47..e334a5c 100644 --- a/shaders/water.h +++ b/shaders/water.h @@ -53,6 +53,9 @@ static struct vg_shader _shader_water = { "uniform vec3 uCamera;\n" "uniform float uSurfaceY;\n" "\n" +"uniform vec3 uShoreColour;\n" +"uniform vec3 uOceanColour;\n" +"\n" "in vec4 aColour;\n" "in vec2 aUv;\n" "in vec3 aNorm;\n" @@ -157,14 +160,12 @@ static struct vg_shader _shader_water = { " return mix( vfrag, vec3(0.55,0.76,1.0), min( 1.0, dist ) );\n" "}\n" "\n" -"#line 19 0 \n" +"#line 22 0 \n" "\n" "vec4 water_surf( vec3 halfview, vec3 vnorm, float depthvalue, \n" " vec4 beneath, vec4 above )\n" "{\n" -" vec3 colour_shore = vec3( 0.21, 0.6, 0.8 );\n" -" vec3 colour_ocean = vec3( 0.01, 0.1, 0.2 );\n" -" vec3 surface_tint = mix(colour_shore, colour_ocean, depthvalue);\n" +" vec3 surface_tint = mix(uShoreColour, uOceanColour, depthvalue);\n" "\n" " float ffresnel = pow(1.0-dot( vnorm, halfview ),5.0);\n" "\n" @@ -229,6 +230,8 @@ static GLuint _uniform_water_uInvRes; static GLuint _uniform_water_uTime; static GLuint _uniform_water_uCamera; static GLuint _uniform_water_uSurfaceY; +static GLuint _uniform_water_uShoreColour; +static GLuint _uniform_water_uOceanColour; static GLuint _uniform_water_g_world_depth; static void shader_water_uMdl(m4x3f m){ glUniformMatrix4x3fv( _uniform_water_uMdl, 1, GL_FALSE, (float *)m ); @@ -257,6 +260,12 @@ static void shader_water_uCamera(v3f v){ static void shader_water_uSurfaceY(float f){ glUniform1f( _uniform_water_uSurfaceY, f ); } +static void shader_water_uShoreColour(v3f v){ + glUniform3fv( _uniform_water_uShoreColour, 1, v ); +} +static void shader_water_uOceanColour(v3f v){ + glUniform3fv( _uniform_water_uOceanColour, 1, v ); +} static void shader_water_g_world_depth(int i){ glUniform1i( _uniform_water_g_world_depth, i ); } @@ -274,6 +283,8 @@ static void shader_water_link(void){ _uniform_water_uTime = glGetUniformLocation( _shader_water.id, "uTime" ); _uniform_water_uCamera = glGetUniformLocation( _shader_water.id, "uCamera" ); _uniform_water_uSurfaceY = glGetUniformLocation( _shader_water.id, "uSurfaceY" ); + _uniform_water_uShoreColour = glGetUniformLocation( _shader_water.id, "uShoreColour" ); + _uniform_water_uOceanColour = glGetUniformLocation( _shader_water.id, "uOceanColour" ); _uniform_water_g_world_depth = glGetUniformLocation( _shader_water.id, "g_world_depth" ); } #endif /* SHADER_water_H */