3 static void render_terrain(m4x4f projection
, v3f camera
);
4 static void render_sky(m4x3f camera
);
13 #include "shaders/terrain.h"
14 #include "shaders/sky.h"
16 vg_tex2d tex_terrain_colours
= { .path
= "textures/gradients.qoi",
17 .flags
= VG_TEXTURE_CLAMP
| VG_TEXTURE_NEAREST
19 vg_tex2d tex_terrain_noise
= { .path
= "textures/garbage.qoi",
20 .flags
= VG_TEXTURE_NEAREST
};
28 static void terrain_register(void)
30 shader_terrain_register();
31 shader_sky_register();
34 static void terrain_init(void)
36 vg_tex2d_init( (vg_tex2d
*[]){ &tex_terrain_colours
,
37 &tex_terrain_noise
}, 2 );
40 model
*msky
= vg_asset_read("models/rs_skydome.mdl");
41 model_unpack( msky
, &trender
.skydome
);
45 static void render_terrain(m4x4f projection
, v3f camera
)
48 shader_terrain_uTexGarbage(0);
49 shader_terrain_uTexGradients(1);
51 vg_tex2d_bind( &tex_terrain_noise
, 0 );
52 vg_tex2d_bind( &tex_terrain_colours
, 1 );
54 m4x3f identity_matrix
;
55 m4x3_identity( identity_matrix
);
56 shader_terrain_uPv( projection
);
57 shader_terrain_uMdl( identity_matrix
);
58 shader_terrain_uCamera( camera
);
59 shader_terrain_uPlane( (v4f
){ 0.0f
,1.0f
,0.0f
, wrender
.height
} );
62 static void render_sky(m4x3f camera
)
64 m4x4f projection
, full
;
65 pipeline_projection( projection
, 0.4f
, 1000.0f
);
68 m3x3_transpose( camera
, inverse
);
69 v3_copy((v3f
){0.0f
,0.0f
,0.0f
}, inverse
[3]);
70 m4x3_expand( inverse
, full
);
71 m4x4_mul( projection
, full
, full
);
73 m4x3f identity_matrix
;
74 m4x3_identity( identity_matrix
);
77 shader_sky_uMdl(identity_matrix
);
79 shader_sky_uTexGarbage(0);
80 shader_sky_uTime( vg_time
);
81 vg_tex2d_bind( &tex_terrain_noise
, 0 );
83 glDepthMask(GL_FALSE
);
84 glDisable(GL_DEPTH_TEST
);
86 mesh_bind( &trender
.skydome
);
87 mesh_draw( &trender
.skydome
);
89 glEnable(GL_DEPTH_TEST
);