Special Area Environments Setup, Guidance Room is Bugged,

This commit is contained in:
Pal
2025-09-11 03:34:46 -07:00
parent 80d4838338
commit 4364c93c5c
58 changed files with 7844 additions and 145 deletions

View File

@@ -1,55 +1,244 @@
shader_type spatial;
render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_lambert, specular_schlick_ggx;
render_mode world_vertex_coords, cull_disabled;
uniform vec3 albedo : source_color;
uniform sampler2D water_texture1;
uniform sampler2D water_texture2;
uniform sampler2D noise_texture;
uniform vec2 scroll_speed1 = vec2(0.05, 0.0);
uniform vec2 scroll_speed2 = vec2(-0.03, 0.0);
uniform float blend_factor = 0.5;
uniform vec2 scale1 = vec2(1.0, 1.0);
uniform vec2 scale2 = vec2(1.0, 1.0);
uniform float wave_strength = 1.0;
uniform float wave_scale = 0.02;
uniform int pixelation_level = 64;
uniform float FoamSize = 0.5;
uniform sampler2D DepthTexture : hint_depth_texture;
uniform float WaterOpacity = 1.0;
uniform float FoamGlowIntensity = 0.5;
uniform sampler2D screen : hint_screen_texture, filter_linear_mipmap_anisotropic, repeat_disable;
group_uniforms colours;
uniform vec3 surfacecolour : source_color;
uniform vec3 volumecolour : source_color;
group_uniforms material;
uniform float AirIOR = 1.0;
uniform float IOR = 1.33;
group_uniforms textures;
uniform vec2 sampler1speed = vec2(0.02, 0.0);
uniform vec2 sampler2speed = vec2(0.0, 0.02);
uniform float samplermix : hint_range(0.0, 1.0, 0.1) = 0.5;
uniform vec2 samplerscale = vec2(0.1);
uniform sampler2D normal1tex : filter_linear_mipmap_anisotropic, hint_normal;
uniform sampler2D normal2tex : filter_linear_mipmap_anisotropic, hint_normal;
uniform float normalstrength : hint_range(0.0, 5.0, 0.01) = 1.0;
uniform sampler2D height1tex : filter_linear_mipmap_anisotropic;
uniform sampler2D height2tex : filter_linear_mipmap_anisotropic;
uniform float heightstrength : hint_range(0.0, 5.0, 0.01) = 0.12;
uniform sampler2D edge1tex : filter_linear_mipmap_anisotropic;
uniform sampler2D edge2tex : filter_linear_mipmap_anisotropic;
varying vec2 position;
varying vec3 wposition;
group_uniforms refraction;
uniform float refrationamount : hint_range(0.0, 1.0, 0.01);
uniform bool fog_underwater;
group_uniforms edge;
uniform float edge_size : hint_range(0.01, 0.5, 0.01) = 0.1;
uniform bool foam_or_fade = false;
uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap, repeat_disable;
group_uniforms screen_space_reflection;
uniform float far_clip = 50.0;
uniform int steps : hint_range(64, 1024, 16) = 512;
uniform float ssr_screen_fade : hint_range(0.01, 0.5, 0.01) = 0.05;
float schlickfresnel(float ior1, float ior2, vec3 view, vec3 norm) {
float incident = dot(view, norm);
float reflectance = pow(((ior2 - ior1)/(ior2 + ior1)), 2.0);
float fresnelincident = reflectance + (1.0 - reflectance) * pow(1.0 - cos(incident), 5.0);
return(fresnelincident / incident);
}
void vertex() {
vec2 global_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xz;
float noise_value = texture(noise_texture, global_position * wave_scale).r;
float wave = sin(global_position.x * 0.2 + global_position.y * 0.2 + TIME + noise_value * 10.0) * wave_strength;
VERTEX.y += wave;
position = VERTEX.xz;
UV = VERTEX.xz * samplerscale + (sampler1speed * TIME);
UV2 = VERTEX.xz * samplerscale + (sampler2speed * TIME);
float height = mix(texture(height1tex, UV),texture(height2tex, UV2),samplermix).x;
VERTEX.y += (height - 0.5) * heightstrength;
wposition = VERTEX;
// Called for every vertex the material is visible on.
}
float snells_window(vec3 normal, vec3 view, float ior) {
float cos_theta = dot(normal, view);
return step(sqrt(1.0 - cos_theta * cos_theta) * ior, 1.0);
}
float linear_depth(float nonlinear_depth, mat4 inv_projection_matrix) {
return 1.0 / (nonlinear_depth * inv_projection_matrix[2].w + inv_projection_matrix[3].w);
}
float nonlinear_depth(float linear_depth, mat4 inv_projection_matrix) {
return (1.0 / linear_depth - inv_projection_matrix[3].w) / inv_projection_matrix[2].w;
}
vec2 view2uv(vec3 position_view_space, mat4 proj_m)
{
vec4 position_clip_space = proj_m * vec4(position_view_space.xyz, 1.0);
vec2 position_ndc = position_clip_space.xy / position_clip_space.w;
return position_ndc.xy * 0.5 + 0.5;
}
float remap(float x, float min1, float max1, float min2, float max2) {
return ((x - min1) / (max1 - min1) + min2) * (max2 - min2);
}
float remap1(float x, float min1, float max1) {
return (x - min1) / (max1 - min1);
}
float edge_fade(vec2 uv, float size) {
float x1 = clamp(remap1(uv.x, 0.0, size), 0.0, 1.0);
float x2 = clamp(remap1(uv.x, 1.0, 1.0 - size), 0.0, 1.0);
float y1 = clamp(remap1(uv.y, 0.0, size), 0.0, 1.0);
float y2 = clamp(remap1(uv.y, 1.0, 1.0 - size), 0.0, 1.0);
return x1*x2*y1*y2;
}
void fragment() {
vec2 scaledUV1 = UV * scale1;
vec2 scaledUV2 = UV * scale2;
vec2 scrolledUV1 = scaledUV1 + scroll_speed1 * TIME;
vec2 scrolledUV2 = scaledUV2 + scroll_speed2 * TIME;
scrolledUV1 = mod(scrolledUV1, vec2(1.0, 1.0));
scrolledUV2 = mod(scrolledUV2, vec2(1.0, 1.0));
scrolledUV1 = floor(scrolledUV1 * float(pixelation_level)) / float(pixelation_level);
scrolledUV2 = floor(scrolledUV2 * float(pixelation_level)) / float(pixelation_level);
vec4 water_color1 = texture(water_texture1, scrolledUV1);
vec4 water_color2 = texture(water_texture2, scrolledUV2);
vec4 blended_water_color = mix(water_color1, water_color2, blend_factor);
vec3 onorm = NORMAL;
float depthValue = texture(DepthTexture, SCREEN_UV).r;
vec4 worldPosition = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, depthValue, 1.0);
worldPosition.xyz /= worldPosition.w;
float foamEffect = clamp(1.0 - smoothstep(worldPosition.z + FoamSize, worldPosition.z, VERTEX.z), 0.0, 1.0);
float foamOpacity = 1.0 - foamEffect;
float foamEffectRounded = round(foamOpacity);
float finalOpacity = foamEffectRounded + WaterOpacity;
vec2 normmap = mix(texture(normal1tex, UV),texture(normal2tex, UV2),samplermix).xy;
NORMAL += TANGENT * (normmap.x - 0.5) * normalstrength;
NORMAL += BINORMAL * (normmap.y - 0.5) * normalstrength;
ALBEDO = blended_water_color.rgb * albedo;
ALPHA = finalOpacity;
EMISSION = vec3(foamEffectRounded) * FoamGlowIntensity;
METALLIC = 0.0;
ROUGHNESS = 1.0;
vec3 wnorm = (vec4(NORMAL, 0.0) * VIEW_MATRIX).xyz;
vec3 wview = (vec4(VIEW, 0.0) * VIEW_MATRIX).xyz;
if (FRONT_FACING) {
ROUGHNESS = 0.0;
METALLIC = 1.0;
SPECULAR = 0.0;
float fres = schlickfresnel(AirIOR, IOR, VIEW, NORMAL);
ALBEDO = surfacecolour * fres;
// REFRACTION
float lineardepth = linear_depth(texture(DEPTH_TEXTURE, SCREEN_UV).r, INV_PROJECTION_MATRIX);
float selfdepth = -VERTEX.z;
float depth_diff = lineardepth - selfdepth;
vec3 tanx = BINORMAL * (normmap.x - 0.5) * normalstrength;
vec3 tany = TANGENT * (normmap.y - 0.5) * normalstrength;
vec2 refracted_uv = SCREEN_UV + (tanx + tany).xy * refrationamount * depth_diff / lineardepth;
float newdepth = linear_depth(texture(DEPTH_TEXTURE, refracted_uv).r, INV_PROJECTION_MATRIX);
//float selfdepth = 1.0/(1.0 + 2.0 * distance(wposition, CAMERA_POSITION_WORLD));
vec3 newvolcolour = mix(volumecolour, vec3(1.0), clamp(1.0 / (depth_diff * 1.0), 0.0, 1.0));
EMISSION = newvolcolour * texture(screen, refracted_uv).rgb;
if (newdepth < selfdepth) {
EMISSION = newvolcolour * texture(screen, SCREEN_UV).rgb;
}
// SSR
vec3 reflected = -reflect(VIEW, NORMAL);
vec3 pos = VERTEX;
int curstep = 0;
bool finished = false;
vec2 uv;
float currentdepth;
while (curstep < steps) {
float step_scale = float(curstep + 1) / float(steps);
float step_dist = step_scale * step_scale * far_clip;
pos += reflected * step_dist;
curstep += 1;
currentdepth = -pos.z;
uv = view2uv(pos, PROJECTION_MATRIX);
if (!(uv.x < 1.0 && uv.y < 1.0 && uv.x > 0.0 && uv.y > 0.0)) {
break;
}
float testdepth = linear_depth(texture(DEPTH_TEXTURE, uv).r, INV_PROJECTION_MATRIX);
if (testdepth < currentdepth) {
finished = true;
break;
}
}
if (finished && currentdepth < far_clip * 0.99) {
ALBEDO *= 1.0 - edge_fade(uv, ssr_screen_fade);
METALLIC *= 1.0 - edge_fade(uv, ssr_screen_fade);
EMISSION += texture(screen, uv).xyz * schlickfresnel(1.0, 1.33, VIEW, NORMAL) * edge_fade(uv, ssr_screen_fade);
}
// EDGE EFFECT
float distfromedge = depth_diff * dot(normalize(NORMAL), normalize(-VERTEX)) / VIEW.z;
if (distfromedge < edge_size) {
distfromedge /= edge_size;
if (foam_or_fade) {
ALPHA = distfromedge;
} else {
float edgetex = mix(texture(edge1tex, UV).r, texture(edge2tex, UV2).r, samplermix);
if (edgetex > distfromedge) {
ALBEDO = vec3(1.0);
ROUGHNESS = 1.0;
METALLIC = 1.0;
EMISSION = vec3(0.0);
NORMAL = onorm;
}
}
}
} else {
// SNELLS WINDOW
float window = snells_window(wnorm, wview, IOR);
if (window > 0.5) {
ROUGHNESS = 1.0;
METALLIC = 1.0;
ALBEDO = vec3(0.0);
SPECULAR = 0.0;
float linear_depth = 1.0 / (texture(DEPTH_TEXTURE, SCREEN_UV).r * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
float selfdepth = 1.0 / (FRAGCOORD.z * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
float depth_diff = linear_depth - selfdepth;
vec3 tanx = BINORMAL * (normmap.x - 0.5) * normalstrength;
vec3 tany = TANGENT * (normmap.y - 0.5) * normalstrength;
float newdepth = 1.0 / (texture(DEPTH_TEXTURE, SCREEN_UV + (tanx + tany).xy * refrationamount).r * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
//float selfdepth = 1.0/(1.0 + 2.0 * distance(wposition, CAMERA_POSITION_WORLD));
vec3 newvolcolour = mix(volumecolour, vec3(1.0), clamp(1.0 / (selfdepth * 1.0), 0.0, 1.0));
if (!fog_underwater) {
newvolcolour = vec3(1.0);
}
EMISSION = newvolcolour * texture(screen, SCREEN_UV + (tanx + tany).xy * refrationamount).rgb;
} else {
ALBEDO = surfacecolour;
ROUGHNESS = 0.0;
METALLIC = 1.0;
// SSR
vec3 reflected = -reflect(VIEW, NORMAL);
vec3 pos = VERTEX;
int curstep = 0;
bool finished = false;
vec2 uv;
float currentdepth;
while (curstep < steps) {
float step_scale = float(curstep + 1) / float(steps);
float step_dist = step_scale * step_scale * far_clip;
pos += reflected * step_dist;
curstep += 1;
currentdepth = -pos.z;
uv = view2uv(pos, PROJECTION_MATRIX);
if (!(uv.x < 1.0 && uv.y < 1.0 && uv.x > 0.0 && uv.y > 0.0)) {
break;
}
float testdepth = linear_depth(texture(DEPTH_TEXTURE, uv).r, INV_PROJECTION_MATRIX);
if (testdepth < currentdepth) {
finished = true;
break;
}
}
if (finished && currentdepth < far_clip * 0.99) {
ALBEDO *= 1.0 - edge_fade(uv, ssr_screen_fade);
METALLIC *= 1.0 - edge_fade(uv, ssr_screen_fade);
EMISSION += texture(screen, uv).xyz * schlickfresnel(1.0, 1.33, VIEW, NORMAL) * edge_fade(uv, ssr_screen_fade);
}
}
}
}

View File

@@ -0,0 +1,244 @@
shader_type spatial;
render_mode world_vertex_coords, cull_disabled;
uniform sampler2D screen : hint_screen_texture, filter_linear_mipmap_anisotropic, repeat_disable;
group_uniforms colours;
uniform vec3 surfacecolour : source_color;
uniform vec3 volumecolour : source_color;
group_uniforms material;
uniform float AirIOR = 1.0;
uniform float IOR = 1.33;
group_uniforms textures;
uniform vec2 sampler1speed = vec2(0.02, 0.0);
uniform vec2 sampler2speed = vec2(0.0, 0.02);
uniform float samplermix : hint_range(0.0, 1.0, 0.1) = 0.5;
uniform vec2 samplerscale = vec2(0.1);
uniform sampler2D normal1tex : filter_linear_mipmap_anisotropic, hint_normal;
uniform sampler2D normal2tex : filter_linear_mipmap_anisotropic, hint_normal;
uniform float normalstrength : hint_range(0.0, 5.0, 0.01) = 1.0;
uniform sampler2D height1tex : filter_linear_mipmap_anisotropic;
uniform sampler2D height2tex : filter_linear_mipmap_anisotropic;
uniform float heightstrength : hint_range(0.0, 5.0, 0.01) = 0.12;
uniform sampler2D edge1tex : filter_linear_mipmap_anisotropic;
uniform sampler2D edge2tex : filter_linear_mipmap_anisotropic;
varying vec2 position;
varying vec3 wposition;
group_uniforms refraction;
uniform float refrationamount : hint_range(0.0, 1.0, 0.01);
uniform bool fog_underwater;
group_uniforms edge;
uniform float edge_size : hint_range(0.01, 0.5, 0.01) = 0.1;
uniform bool foam_or_fade = false;
uniform sampler2D DEPTH_TEXTURE : hint_depth_texture, filter_linear_mipmap, repeat_disable;
group_uniforms screen_space_reflection;
uniform float far_clip = 50.0;
uniform int steps : hint_range(64, 1024, 16) = 512;
uniform float ssr_screen_fade : hint_range(0.01, 0.5, 0.01) = 0.05;
float schlickfresnel(float ior1, float ior2, vec3 view, vec3 norm) {
float incident = dot(view, norm);
float reflectance = pow(((ior2 - ior1)/(ior2 + ior1)), 2.0);
float fresnelincident = reflectance + (1.0 - reflectance) * pow(1.0 - cos(incident), 5.0);
return(fresnelincident / incident);
}
void vertex() {
position = VERTEX.xz;
UV = VERTEX.xz * samplerscale + (sampler1speed * TIME);
UV2 = VERTEX.xz * samplerscale + (sampler2speed * TIME);
float height = mix(texture(height1tex, UV),texture(height2tex, UV2),samplermix).x;
VERTEX.y += (height - 0.5) * heightstrength;
wposition = VERTEX;
// Called for every vertex the material is visible on.
}
float snells_window(vec3 normal, vec3 view, float ior) {
float cos_theta = dot(normal, view);
return step(sqrt(1.0 - cos_theta * cos_theta) * ior, 1.0);
}
float linear_depth(float nonlinear_depth, mat4 inv_projection_matrix) {
return 1.0 / (nonlinear_depth * inv_projection_matrix[2].w + inv_projection_matrix[3].w);
}
float nonlinear_depth(float linear_depth, mat4 inv_projection_matrix) {
return (1.0 / linear_depth - inv_projection_matrix[3].w) / inv_projection_matrix[2].w;
}
vec2 view2uv(vec3 position_view_space, mat4 proj_m)
{
vec4 position_clip_space = proj_m * vec4(position_view_space.xyz, 1.0);
vec2 position_ndc = position_clip_space.xy / position_clip_space.w;
return position_ndc.xy * 0.5 + 0.5;
}
float remap(float x, float min1, float max1, float min2, float max2) {
return ((x - min1) / (max1 - min1) + min2) * (max2 - min2);
}
float remap1(float x, float min1, float max1) {
return (x - min1) / (max1 - min1);
}
float edge_fade(vec2 uv, float size) {
float x1 = clamp(remap1(uv.x, 0.0, size), 0.0, 1.0);
float x2 = clamp(remap1(uv.x, 1.0, 1.0 - size), 0.0, 1.0);
float y1 = clamp(remap1(uv.y, 0.0, size), 0.0, 1.0);
float y2 = clamp(remap1(uv.y, 1.0, 1.0 - size), 0.0, 1.0);
return x1*x2*y1*y2;
}
void fragment() {
vec3 onorm = NORMAL;
vec2 normmap = mix(texture(normal1tex, UV),texture(normal2tex, UV2),samplermix).xy;
NORMAL += TANGENT * (normmap.x - 0.5) * normalstrength;
NORMAL += BINORMAL * (normmap.y - 0.5) * normalstrength;
vec3 wnorm = (vec4(NORMAL, 0.0) * VIEW_MATRIX).xyz;
vec3 wview = (vec4(VIEW, 0.0) * VIEW_MATRIX).xyz;
if (FRONT_FACING) {
ROUGHNESS = 0.0;
METALLIC = 1.0;
SPECULAR = 0.0;
float fres = schlickfresnel(AirIOR, IOR, VIEW, NORMAL);
ALBEDO = surfacecolour * fres;
// REFRACTION
float lineardepth = linear_depth(texture(DEPTH_TEXTURE, SCREEN_UV).r, INV_PROJECTION_MATRIX);
float selfdepth = -VERTEX.z;
float depth_diff = lineardepth - selfdepth;
vec3 tanx = BINORMAL * (normmap.x - 0.5) * normalstrength;
vec3 tany = TANGENT * (normmap.y - 0.5) * normalstrength;
vec2 refracted_uv = SCREEN_UV + (tanx + tany).xy * refrationamount * depth_diff / lineardepth;
float newdepth = linear_depth(texture(DEPTH_TEXTURE, refracted_uv).r, INV_PROJECTION_MATRIX);
//float selfdepth = 1.0/(1.0 + 2.0 * distance(wposition, CAMERA_POSITION_WORLD));
vec3 newvolcolour = mix(volumecolour, vec3(1.0), clamp(1.0 / (depth_diff * 1.0), 0.0, 1.0));
EMISSION = newvolcolour * texture(screen, refracted_uv).rgb;
if (newdepth < selfdepth) {
EMISSION = newvolcolour * texture(screen, SCREEN_UV).rgb;
}
// SSR
vec3 reflected = -reflect(VIEW, NORMAL);
vec3 pos = VERTEX;
int curstep = 0;
bool finished = false;
vec2 uv;
float currentdepth;
while (curstep < steps) {
float step_scale = float(curstep + 1) / float(steps);
float step_dist = step_scale * step_scale * far_clip;
pos += reflected * step_dist;
curstep += 1;
currentdepth = -pos.z;
uv = view2uv(pos, PROJECTION_MATRIX);
if (!(uv.x < 1.0 && uv.y < 1.0 && uv.x > 0.0 && uv.y > 0.0)) {
break;
}
float testdepth = linear_depth(texture(DEPTH_TEXTURE, uv).r, INV_PROJECTION_MATRIX);
if (testdepth < currentdepth) {
finished = true;
break;
}
}
if (finished && currentdepth < far_clip * 0.99) {
ALBEDO *= 1.0 - edge_fade(uv, ssr_screen_fade);
METALLIC *= 1.0 - edge_fade(uv, ssr_screen_fade);
EMISSION += texture(screen, uv).xyz * schlickfresnel(1.0, 1.33, VIEW, NORMAL) * edge_fade(uv, ssr_screen_fade);
}
// EDGE EFFECT
float distfromedge = depth_diff * dot(normalize(NORMAL), normalize(-VERTEX)) / VIEW.z;
if (distfromedge < edge_size) {
distfromedge /= edge_size;
if (foam_or_fade) {
ALPHA = distfromedge;
} else {
float edgetex = mix(texture(edge1tex, UV).r, texture(edge2tex, UV2).r, samplermix);
if (edgetex > distfromedge) {
ALBEDO = vec3(1.0);
ROUGHNESS = 1.0;
METALLIC = 1.0;
EMISSION = vec3(0.0);
NORMAL = onorm;
}
}
}
} else {
// SNELLS WINDOW
float window = snells_window(wnorm, wview, IOR);
if (window > 0.5) {
ROUGHNESS = 1.0;
METALLIC = 1.0;
ALBEDO = vec3(0.0);
SPECULAR = 0.0;
float linear_depth = 1.0 / (texture(DEPTH_TEXTURE, SCREEN_UV).r * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
float selfdepth = 1.0 / (FRAGCOORD.z * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
float depth_diff = linear_depth - selfdepth;
vec3 tanx = BINORMAL * (normmap.x - 0.5) * normalstrength;
vec3 tany = TANGENT * (normmap.y - 0.5) * normalstrength;
float newdepth = 1.0 / (texture(DEPTH_TEXTURE, SCREEN_UV + (tanx + tany).xy * refrationamount).r * INV_PROJECTION_MATRIX[2].w + INV_PROJECTION_MATRIX[3].w);
//float selfdepth = 1.0/(1.0 + 2.0 * distance(wposition, CAMERA_POSITION_WORLD));
vec3 newvolcolour = mix(volumecolour, vec3(1.0), clamp(1.0 / (selfdepth * 1.0), 0.0, 1.0));
if (!fog_underwater) {
newvolcolour = vec3(1.0);
}
EMISSION = newvolcolour * texture(screen, SCREEN_UV + (tanx + tany).xy * refrationamount).rgb;
} else {
ALBEDO = surfacecolour;
ROUGHNESS = 0.0;
METALLIC = 1.0;
// SSR
vec3 reflected = -reflect(VIEW, NORMAL);
vec3 pos = VERTEX;
int curstep = 0;
bool finished = false;
vec2 uv;
float currentdepth;
while (curstep < steps) {
float step_scale = float(curstep + 1) / float(steps);
float step_dist = step_scale * step_scale * far_clip;
pos += reflected * step_dist;
curstep += 1;
currentdepth = -pos.z;
uv = view2uv(pos, PROJECTION_MATRIX);
if (!(uv.x < 1.0 && uv.y < 1.0 && uv.x > 0.0 && uv.y > 0.0)) {
break;
}
float testdepth = linear_depth(texture(DEPTH_TEXTURE, uv).r, INV_PROJECTION_MATRIX);
if (testdepth < currentdepth) {
finished = true;
break;
}
}
if (finished && currentdepth < far_clip * 0.99) {
ALBEDO *= 1.0 - edge_fade(uv, ssr_screen_fade);
METALLIC *= 1.0 - edge_fade(uv, ssr_screen_fade);
EMISSION += texture(screen, uv).xyz * schlickfresnel(1.0, 1.33, VIEW, NORMAL) * edge_fade(uv, ssr_screen_fade);
}
}
}
}

View File

@@ -0,0 +1 @@
uid://yagva4an6w2

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=257 format=4 uid="uid://dvnc26rebk6o0"]
[gd_scene load_steps=266 format=4 uid="uid://dvnc26rebk6o0"]
[ext_resource type="Script" uid="uid://cuhfkyh3d7noa" path="res://src/map/dungeon/code/Overworld.cs" id="1_5hmt3"]
[ext_resource type="Texture2D" uid="uid://co6h8vyi11sl2" path="res://src/map/overworld/Models/Overworld_CLOUD_RINGS_INNER_63.png" id="2_g6b7b"]
@@ -17,6 +17,7 @@
[ext_resource type="Texture2D" uid="uid://dicwnhepupj5a" path="res://src/map/overworld/Models/Overworld_CLOUD_RINGS_OUTTER_33.png" id="15_8isf0"]
[ext_resource type="Texture2D" uid="uid://bs8a3hyubf521" path="res://src/map/overworld/Models/Overworld_makeshift_skybox_Cloudscape 3.png" id="16_8nnl3"]
[ext_resource type="Shader" uid="uid://blrcjqdo7emhs" path="res://src/map/overworld/Models/water.gdshader" id="17_b53dq"]
[ext_resource type="Shader" uid="uid://yagva4an6w2" path="res://src/map/overworld/Overworld Water.gdshader" id="17_q2pi3"]
[ext_resource type="Texture2D" uid="uid://cchqagfhsko0r" path="res://src/map/overworld/Models/Overworld_optimized_Pass 1_A1_eyeblock.png" id="18_r86sn"]
[ext_resource type="Texture2D" uid="uid://bkly85kkv2gjs" path="res://src/map/overworld/Models/Overworld_optimized_Pass 1_concrete_0025_color_1k.jpg" id="19_0u0mt"]
[ext_resource type="Texture2D" uid="uid://cgx3b275abnwg" path="res://src/map/overworld/Models/Overworld_optimized_Pass 1_OW_Worked-Stone-Outside.png" id="20_4rcfa"]
@@ -71,6 +72,7 @@
[ext_resource type="PackedScene" uid="uid://jds3hr41coal" path="res://src/npc/Ran/Ran.tscn" id="69_g6b7b"]
[ext_resource type="PackedScene" uid="uid://db206brufi83s" path="res://src/items/weapons/Weapon.tscn" id="70_r8r3k"]
[ext_resource type="Resource" uid="uid://cfhwlpa0d7wb4" path="res://src/items/weapons/resources/MysteryRod.tres" id="71_t71yg"]
[ext_resource type="Texture2D" uid="uid://c38grr8d22ukg" path="res://src/map/overworld/cloudscape.png" id="73_wbbo3"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_peugn"]
resource_name = "CLOUDS1"
@@ -524,6 +526,7 @@ data = PackedVector3Array(-235.885, 85.1831, 15.018, -200.915, -47.8481, 15.1655
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ojtar"]
resource_name = "SKYBOX TEXTURE"
cull_mode = 2
shading_mode = 0
albedo_texture = ExtResource("16_8nnl3")
[sub_resource type="ArrayMesh" id="ArrayMesh_qmtp4"]
@@ -560,23 +563,40 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_qmtp4")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_g6b7b"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_c2gp5"]
noise_type = 2
seed = 4
frequency = 0.0245
fractal_octaves = 2
domain_warp_enabled = true
domain_warp_amplitude = 40.02
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pvi8n"]
seamless = true
seamless_blend_skirt = 0.296
noise = SubResource("FastNoiseLite_c2gp5")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_d1qcb"]
render_priority = 0
shader = ExtResource("17_b53dq")
shader_parameter/albedo = Color(0.427493, 0.427493, 0.427493, 1)
shader_parameter/water_texture1 = ExtResource("29_gdgdy")
shader_parameter/water_texture2 = ExtResource("29_gdgdy")
shader_parameter/scroll_speed1 = Vector2(0.05, 0)
shader_parameter/scroll_speed2 = Vector2(-0.03, 0)
shader_parameter/blend_factor = 0.5
shader_parameter/scale1 = Vector2(1, 1)
shader_parameter/scale2 = Vector2(1, 1)
shader_parameter/wave_strength = 0.001
shader_parameter/wave_scale = 0.02
shader_parameter/pixelation_level = 64
shader_parameter/FoamSize = 0.1
shader_parameter/WaterOpacity = 1.13
shader_parameter/FoamGlowIntensity = 0.04
shader = ExtResource("17_q2pi3")
shader_parameter/surfacecolour = Color(9.62615e-07, 0.76529, 0.77634, 1)
shader_parameter/volumecolour = Color(0.224564, 0.518909, 0.356444, 1)
shader_parameter/AirIOR = 1.0
shader_parameter/IOR = 1.33
shader_parameter/sampler1speed = Vector2(0.02, 0)
shader_parameter/sampler2speed = Vector2(0, 0.02)
shader_parameter/samplermix = 0.5
shader_parameter/samplerscale = Vector2(0.1, 0.1)
shader_parameter/normal1tex = SubResource("NoiseTexture2D_pvi8n")
shader_parameter/normalstrength = 1.0
shader_parameter/heightstrength = 1.0
shader_parameter/refrationamount = 0.15
shader_parameter/fog_underwater = true
shader_parameter/edge_size = 0.14
shader_parameter/foam_or_fade = true
shader_parameter/far_clip = 50.0
shader_parameter/steps = 512
shader_parameter/ssr_screen_fade = 0.05
[sub_resource type="ArrayMesh" id="ArrayMesh_3kd5v"]
_surfaces = [{
@@ -600,7 +620,7 @@ _surfaces = [{
"format": 34896613399,
"index_count": 6,
"index_data": PackedByteArray("AAABAAIAAAADAAEA"),
"material": SubResource("ShaderMaterial_g6b7b"),
"material": SubResource("ShaderMaterial_d1qcb"),
"name": "WATER",
"primitive": 3,
"uv_scale": Vector4(252.583, 254.961, 0, 0),
@@ -7812,26 +7832,38 @@ _surfaces = [{
blend_shape_mode = 0
shadow_mesh = SubResource("ArrayMesh_qe48t")
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_uyygh"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_l0fgw"]
noise_type = 2
seed = 4
frequency = 0.0281
domain_warp_enabled = true
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_kq4kf"]
seamless = true
seamless_blend_skirt = 0.278
noise = SubResource("FastNoiseLite_l0fgw")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_r8r3k"]
render_priority = 0
shader = ExtResource("17_b53dq")
shader_parameter/albedo = Color(0.450648, 0.450648, 0.450648, 1)
shader_parameter/water_texture1 = ExtResource("29_gdgdy")
shader_parameter/water_texture2 = ExtResource("29_gdgdy")
shader_parameter/noise_texture = SubResource("NoiseTexture2D_uyygh")
shader_parameter/scroll_speed1 = Vector2(0.01, 0)
shader_parameter/scroll_speed2 = Vector2(0, 0)
shader_parameter/blend_factor = 0.25
shader_parameter/scale1 = Vector2(1, 1)
shader_parameter/scale2 = Vector2(1, 1)
shader_parameter/wave_strength = 0.05
shader_parameter/wave_scale = 0.08
shader_parameter/pixelation_level = 64
shader_parameter/FoamSize = 0.5
shader_parameter/WaterOpacity = 0.915
shader_parameter/FoamGlowIntensity = 0.025
shader_parameter/surfacecolour = Color(0.22549, 0.466573, 0.377406, 1)
shader_parameter/volumecolour = Color(0.397243, 0.75619, 0.761684, 1)
shader_parameter/AirIOR = 1.0
shader_parameter/IOR = 1.33
shader_parameter/sampler1speed = Vector2(0.02, 0)
shader_parameter/sampler2speed = Vector2(0, 0.02)
shader_parameter/samplermix = 0.5
shader_parameter/samplerscale = Vector2(0.1, 0.1)
shader_parameter/normal1tex = SubResource("NoiseTexture2D_kq4kf")
shader_parameter/normalstrength = 1.0
shader_parameter/heightstrength = 1.0
shader_parameter/refrationamount = 0.1
shader_parameter/fog_underwater = true
shader_parameter/edge_size = 0.1
shader_parameter/foam_or_fade = false
shader_parameter/far_clip = 50.0
shader_parameter/steps = 512
shader_parameter/ssr_screen_fade = 0.05
[sub_resource type="ArrayMesh" id="ArrayMesh_0gwme"]
_surfaces = [{
@@ -7911,6 +7943,35 @@ shadow_mesh = SubResource("ArrayMesh_5h042")
[sub_resource type="BoxShape3D" id="BoxShape3D_b53dq"]
size = Vector3(32.7888, 2.34912, 11.2217)
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_322om"]
resource_local_to_scene = true
panorama = ExtResource("73_wbbo3")
[sub_resource type="Sky" id="Sky_nfcfh"]
sky_material = SubResource("PanoramaSkyMaterial_322om")
[sub_resource type="Environment" id="Environment_8isf0"]
background_mode = 2
background_energy_multiplier = 1.58
sky = SubResource("Sky_nfcfh")
ambient_light_source = 3
ambient_light_color = Color(0.551372, 0.345892, 0.321587, 1)
ambient_light_sky_contribution = 0.06
ambient_light_energy = 0.0
glow_enabled = true
glow_intensity = 0.37
glow_strength = 0.78
glow_bloom = 1.0
glow_blend_mode = 0
volumetric_fog_enabled = true
volumetric_fog_density = 0.0049
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_8nnl3"]
dof_blur_far_enabled = true
dof_blur_far_distance = 16.33
dof_blur_far_transition = -1.0
dof_blur_amount = 0.04
[node name="Overworld" type="Node3D"]
script = ExtResource("1_5hmt3")
@@ -7944,9 +8005,11 @@ skeleton = NodePath("")
shape = SubResource("ConcavePolygonShape3D_b53dq")
[node name="Overworld_makeshift_skybox" type="Node3D" parent="Model"]
visible = false
[node name="SKYBOX" type="MeshInstance3D" parent="Model/Overworld_makeshift_skybox"]
transform = Transform3D(-0.405468, 0, 1.16703, 0, 1.47605, 0, -1.16703, 0, -0.405468, -357.203, 584.78, 26.8501)
visible = false
mesh = SubResource("ArrayMesh_f7iju")
skeleton = NodePath("")
@@ -8278,8 +8341,21 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.5815, -2.1779, -3.80354)
shape = SubResource("BoxShape3D_b53dq")
[node name="Ran" parent="." instance=ExtResource("69_g6b7b")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -230.292, 4.34026, 49.3324)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -230.292, 2.58746, 49.3324)
[node name="Weapon" parent="Ran" instance=ExtResource("70_r8r3k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.451996, -1.48021, -8.76553)
Stats = ExtResource("71_t71yg")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_8isf0")
camera_attributes = SubResource("CameraAttributesPractical_8nnl3")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.971134, 0.21671, 0.0996753, 0, -0.417867, 0.908508, 0.238533, -0.882284, -0.405805, 0, 0, 0)
light_color = Color(0.686483, 0.641012, 0.609096, 1)
light_energy = 2.032
light_angular_distance = 7.62
shadow_enabled = true
shadow_blur = 0.154
sky_mode = 1

View File

@@ -3,25 +3,26 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://wp1tfin03jvw"
path="res://.godot/imported/bricks_0012_color_1k.jpg-c58bb1a8de58a0f87fac7ce012904291.ctex"
path.s3tc="res://.godot/imported/bricks_0012_color_1k.jpg-c58bb1a8de58a0f87fac7ce012904291.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://src/map/overworld/Textures/SMALLER1/bricks_0012_color_1k.jpg"
dest_files=["res://.godot/imported/bricks_0012_color_1k.jpg-c58bb1a8de58a0f87fac7ce012904291.ctex"]
dest_files=["res://.godot/imported/bricks_0012_color_1k.jpg-c58bb1a8de58a0f87fac7ce012904291.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -31,4 +32,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c38grr8d22ukg"
path="res://.godot/imported/cloudscape.png-29efe3556c41f563b84d4020f8c64613.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://src/map/overworld/cloudscape.png"
dest_files=["res://.godot/imported/cloudscape.png-29efe3556c41f563b84d4020f8c64613.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0