Fix water shader with HDR 2D
This commit is contained in:
+1
-1
@@ -76,5 +76,5 @@ locale/translation_remaps={}
|
||||
|
||||
[rendering]
|
||||
|
||||
viewport/hdr_2d=true
|
||||
textures/vram_compression/import_etc2_astc=true
|
||||
viewport/hdr_2d=true
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
[resource]
|
||||
shader = ExtResource("1_3btqb")
|
||||
shader_parameter/WATER_COL = Color(0.352941, 0.713726, 0.67451, 1)
|
||||
shader_parameter/WATER2_COL = Color(0.329412, 0.670588, 0.619608, 1)
|
||||
shader_parameter/FOAM_COL = Color(0.65098, 0.882353, 0.847059, 1)
|
||||
shader_parameter/WATER_COL = Color(0.3479, 0.71, 0.667755, 1)
|
||||
shader_parameter/WATER2_COL = Color(0.3283, 0.67, 0.618745, 1)
|
||||
shader_parameter/FOAM_COL = Color(0.6512, 0.88, 0.84568, 1)
|
||||
shader_parameter/distortion_speed = 0.75
|
||||
shader_parameter/tile = Vector2(0.4, 0.4)
|
||||
shader_parameter/offset = Vector2(0, 0)
|
||||
|
||||
@@ -13,6 +13,19 @@ const float TWOPI = 6.283185307;
|
||||
const float SIXPI = 18.84955592;
|
||||
|
||||
|
||||
float linearToSRGB(float input) {
|
||||
if(input < 0.040449907){
|
||||
return input/12.92;
|
||||
}else{
|
||||
return pow(((input+0.055)/1.055),2.4);
|
||||
}
|
||||
}
|
||||
|
||||
vec3 correctHDR(vec3 targetColor) {
|
||||
vec3 convertedColor = vec3(linearToSRGB(targetColor.r),linearToSRGB(targetColor.g),linearToSRGB(targetColor.b));
|
||||
return convertedColor;
|
||||
}
|
||||
|
||||
float circ(vec2 pos, vec2 c, float s)
|
||||
{
|
||||
c = abs(pos - c);
|
||||
@@ -114,7 +127,7 @@ vec3 water(vec2 uv, vec3 cdir, float iTime)
|
||||
uv += a * h;
|
||||
h = sin(0.841471 * uv.x - 0.540302 * uv.y + iTime);
|
||||
uv += a * h;
|
||||
|
||||
|
||||
// Texture distortion
|
||||
float d1 = mod(uv.x + uv.y, TWOPI);
|
||||
float d2 = mod((uv.x + uv.y + 0.25) * 1.3, SIXPI);
|
||||
@@ -124,9 +137,9 @@ vec3 water(vec2 uv, vec3 cdir, float iTime)
|
||||
sin(d1) * 0.15 + sin(d2) * 0.05,
|
||||
cos(d1) * 0.15 + cos(d2) * 0.05
|
||||
);
|
||||
|
||||
vec3 ret = mix(WATER_COL.rgb, WATER2_COL.rgb, waterlayer(uv + dist.xy));
|
||||
ret = mix(ret, FOAM_COL.rgb, waterlayer(vec2(1.0) - uv - dist.yx));
|
||||
|
||||
vec3 ret = mix(correctHDR(WATER_COL.rgb), correctHDR(WATER2_COL.rgb), waterlayer(uv + dist.xy));
|
||||
ret = mix(ret, correctHDR(FOAM_COL.rgb), waterlayer(vec2(1.0) - uv - dist.yx));
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user