9 #include "shaders/terrain.h"
10 #include "shaders/sky.h"
12 vg_tex2d tex_terrain_colours
= { .path
= "textures/gradients.qoi",
13 .flags
= VG_TEXTURE_CLAMP
| VG_TEXTURE_NEAREST
15 vg_tex2d tex_terrain_noise
= { .path
= "textures/garbage.qoi",
16 .flags
= VG_TEXTURE_NEAREST
};
24 static void terrain_register(void)
26 shader_terrain_register();
27 shader_sky_register();
30 static void terrain_init(void)
32 vg_tex2d_init( (vg_tex2d
*[]){ &tex_terrain_colours
,
33 &tex_terrain_noise
}, 2 );
36 model
*msky
= vg_asset_read("models/rs_skydome.mdl");
37 model_unpack( msky
, &trender
.skydome
);
41 static void render_terrain(m4x4f projection
, v3f camera
)
44 shader_terrain_uTexGarbage(0);
45 shader_terrain_uTexGradients(1);
47 vg_tex2d_bind( &tex_terrain_noise
, 0 );
48 vg_tex2d_bind( &tex_terrain_colours
, 1 );
50 m4x3f identity_matrix
;
51 m4x3_identity( identity_matrix
);
52 shader_terrain_uPv( projection
);
53 shader_terrain_uMdl( identity_matrix
);
54 shader_terrain_uCamera( camera
);
57 static void render_sky(m4x3f camera
)
59 m4x4f projection
, full
;
60 pipeline_projection( projection
, 0.4f
, 1000.0f
);
63 m3x3_transpose( camera
, inverse
);
64 v3_copy((v3f
){0.0f
,0.0f
,0.0f
}, inverse
[3]);
65 m4x3_expand( inverse
, full
);
66 m4x4_mul( projection
, full
, full
);
68 m4x3f identity_matrix
;
69 m4x3_identity( identity_matrix
);
72 shader_sky_uMdl(identity_matrix
);
74 shader_sky_uTexGarbage(0);
75 shader_sky_uTime( vg_time
);
76 vg_tex2d_bind( &tex_terrain_noise
, 0 );
78 glDepthMask(GL_FALSE
);
79 glDisable(GL_DEPTH_TEST
);
81 mesh_bind( &trender
.skydome
);
82 mesh_draw( &trender
.skydome
);
84 glEnable(GL_DEPTH_TEST
);