Comments

Log in with itch.io to leave a comment.

really beautiful! It took me quite a few trips up and down the path to find the secret, but I didn't mind too much because this janky atmosphere was delightful to spend some time in. honestly, the narration takes away from this, would probably be a lot spookier without it. I spent a long time just admiring the grass and flowers - would you mind sharing how you achieved that look? is the source available?

Thanks, it's just a vertex shader on a 1x8 Quad Mesh, then I ran this vertex shader:

shader_type spatial;

render_mode cull_disabled;

varying vec3 instance_pos;

uniform sampler2D windNoise: source_color;

uniform sampler2D jitterNoise: source_color;

uniform sampler2D densityNoise: source_color;

uniform vec4 shortColor : source_color;

uniform vec4 tallColor : source_color;

uniform vec4 botColor : source_color;

uniform float subdivision = 10.0;

varying float grass_height;

const float grass_scale = 0.2;

mat2 rotate(float rad){

    return mat2(

        vec2(cos(rad), -sin(rad)),

        vec2(sin(rad), cos(rad)));

    

}

mat3 scale(float scale){

    return mat3(vec3(scale, 0.0, 0.0),

    vec3(0.0, scale, 0.0),

    vec3(0.0, 0.0, scale));

}

void vertex() {

    

    float windSpeed = 0.07;

    float windScale = 200.0;

    float windIntensity = 0.7;

    float jitterSpeed = 0.1;

    float windContrast = 1.0;

    

    vec2 windPos =  vec2(TIME * windSpeed) + MODEL_MATRIX[3].xz / windScale;

    float windF = clamp(texture(windNoise, windPos).r * windContrast, 0.0, 1.0);

    float jitter = texture(jitterNoise,  vec2(TIME * jitterSpeed) + MODEL_MATRIX[3].xz).r;

    jitter = jitter * 2.0 - 1.0;

    jitter *= 0.5;

    windF = windF * 2.0 * PI - PI;

    

    vec2 windDir = vec2(cos(windF), sin(windF)) * windIntensity;

    windF *= 1.0;

    vec2 tipAngle = windDir - jitter * 0.6;

    VERTEX.xy = floor(VERTEX.xy * rotate(tipAngle.x * (VERTEX.y / subdivision)));

    VERTEX.yz = floor(VERTEX.yz * rotate(tipAngle.y * (VERTEX.y / subdivision)));

    

    

    //BIllboarding

    MODELVIEW_MATRIX = VIEW_MATRIX * mat4(vec4(normalize(cross(vec3(0.0, 1.0, 0.0), INV_VIEW_MATRIX[2].xyz)), 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(normalize(cross(INV_VIEW_MATRIX[0].xyz, vec3(0.0, 1.0, 0.0))), 0.0), MODEL_MATRIX[3]);

    NORMAL = vec3(0.0,1.0,0.0); //hack

    ///Normal Hack, return when you have 3D rot matrix function

    if(false){

        vec3 norm1 = vec3(0.0,1.0* 0.8,1.0);

        vec3 norm2 = vec3(1.0,0.0* 0.8,1.0);

        vec3 normal = mix(norm1,norm2,UV.x);

        NORMAL = normalize(normal);

    }

    grass_height = texture(densityNoise, MODEL_MATRIX[3].xz / 75.0 ).r;

    grass_height = max(0.25, grass_height);

    VERTEX.xyz = VERTEX.xyz * scale(grass_height * grass_scale);

}

void fragment(){

    if(!FRONT_FACING){

        NORMAL = NORMAL * -1.0;

    }

    //ALBEDO = some_color;

    //ALBEDO = vec3((1. - UV.y)/ 2.0);

    vec4 topColor = mix(shortColor,tallColor, grass_height);

    //vec4 topColor = mix(shortColor,tallColor, 1.0);

    float contrast_uv = clamp((UV.y-0.5) * 2.0 + 0.5, 0.0, 1.0);

    ALBEDO = mix(botColor.rgb,topColor.rgb, floor((1. - contrast_uv) * subdivision) / subdivision);

    

    //ALBEDO = vec3(topColor.rgb * (contrast_uv));

}

it's not very clean as this was all playground/testing stuff. But if you copy and paste this onto a shader you should achieve the same thing.

thx so much! I'm having trouble getting this working, pretty rusty with vertex shaders. if you wouldn't elaborating a little more on the setup from a few questions? 

1. did u have the shader in the surface material override of a MeshInstance3D? 

2. did u mean 1x8 subdivisions on a quad that's horizontal? 

3. I'm on Godot 4.2, do u think the version might matter? there's no errors

There is not much difference in shaders in any godot 4 version, Sintra was made in 4.2.2. This video might help explain. Also apologies for the lip-smacking, I had just eaten a sandwich.

Nice game :) I liked the narration. Remembered one game that I played called THE PARK.

(+1)

Thanks for playing, hope you enjoyed discovering the second ending

Comments below clip:

When one follows in the footsteps of the past, will one end in a better future? It is every parents nightmare to lose a child, no matter how, and because this game is based on a true story/events, one can only feel sorry for what has transpired [in reality]. As I'm a board certified 1-ending guy, I will watch the other clips on this page to see what the second ending entails.

I didn’t run into any bugs, hiccups or other snags, so kudos to all involved and thank you for making this interesting game! I had tons of fun playing it.

Good take, thanks for playing!

good game seeing the moon rise up was beautiful 
/edit
/edit

Thanks, nice seeing the frustration ahaha, second ending is only for the real Gs

Eerie short story with a great atmosphere and nice looking visual effects

Wow this was absolutely great game 10/10 I like it a lot and great 2 endings and really well animated and well made whole game anyway well done and keep it up!

Thanks