Skip to content

Commit bda29bd

Browse files
committed
wobbly world
1 parent efa8896 commit bda29bd

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

shaders/block_warp_vertex.glsl

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#version 330 core
2+
3+
layout (location = 0) in vec3 a_pos;
4+
layout (location = 1) in vec2 a_texcoord;
5+
layout (location = 3) in float a_ao;
6+
layout (location = 2) in uint a_tile;
7+
8+
out vec2 v_texcoord;
9+
out float v_ao;
10+
flat out uint v_tile;
11+
out float v_fog_amount;
12+
13+
uniform mat4 mvp_matrix;
14+
uniform vec3 cam_pos;
15+
uniform float fog_dist;
16+
17+
uniform float time;
18+
19+
#define PI 3.1415926538
20+
21+
float map(float value, float min1, float max1, float min2, float max2)
22+
{
23+
return min2 + (value - min1) * (max2 - min2) / (max1 - min1);
24+
}
25+
26+
void main()
27+
{
28+
gl_Position = vec4(a_pos, 1.0);
29+
v_ao = a_ao;
30+
v_tile = a_tile;
31+
v_texcoord = a_texcoord;
32+
33+
float dist_to_cam = distance(cam_pos.xz, a_pos.xz);
34+
float dist_x = distance(cam_pos.x, a_pos.x);
35+
float dist_y = distance(cam_pos.y, a_pos.y);
36+
v_fog_amount = 0.001 * pow(clamp(dist_to_cam / fog_dist, 0.0, 1.0), 2.0);
37+
38+
gl_Position.y += 25 * sin(dist_to_cam * sin(time * 0.075) * 0.5) * min(dist_to_cam / 100, 1);
39+
//gl_Position.y += 145 * sin(dist_to_cam * 0.025) * min(dist_to_cam / 100, 1) * sin(time * 0.7);
40+
float x = gl_Position.x;
41+
float y = gl_Position.y;
42+
float om = sin(dist_to_cam * sin(time * 0.1) * 0.1) * sin(time * 0.75);
43+
om *= 0.25;
44+
om *= min(dist_to_cam / 50, 1);
45+
gl_Position.x = x * cos(om) - y * sin(om);
46+
gl_Position.y = x * sin(om) + y * cos(om);
47+
48+
//gl_Position.y += 0.05 * dist_to_cam * dist_to_cam;
49+
//if (dist_to_cam > 2)
50+
// gl_Position.y += 5;
51+
52+
//gl_Position.x = cam_pos.x + 10 * (sin(dist_x / 10 + 3.1415 / 2) - 1);
53+
54+
// Huge cylinder!
55+
//float r = 10;
56+
//gl_Position.x = cam_pos.x + r * sin(dist_x / r) * sign(a_pos.x - cam_pos.x);
57+
//gl_Position.y += (r - dist_y / 2) * (sin(dist_x / r - PI / 2) + 1);
58+
59+
gl_Position = mvp_matrix * gl_Position;
60+
}

src/map.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,8 @@ void map_render_chunks(Camera* cam)
361361
shader_set_float3(shader_block, "cam_pos", cam->pos);
362362
shader_set_float1(shader_block, "fog_dist", CHUNK_RENDER_RADIUS * CHUNK_SIZE * 0.95f);
363363

364+
shader_set_float1(shader_block, "time", glfwGetTime());
365+
364366
float r, g, b;
365367
map_get_fog_color(&r, &g, &b);
366368
shader_set_float3(shader_block, "fog_color", (vec3){r, g, b});

src/shader.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ GLuint create_shader_program(const char* vs_path, const char* fs_path)
9898
void shaders_load()
9999
{
100100
shader_block = create_shader_program(
101-
"shaders/block_vertex.glsl",
101+
"shaders/block_warp_vertex.glsl",
102102
"shaders/block_fragment.glsl"
103103
);
104104

0 commit comments

Comments
 (0)