A 3D game engine from scratch.
1// (c) 2020 Vlad-Stefan Harbuz <vlad@vladh.net>
2
3uniform sampler2D g_position_texture;
4uniform sampler2D g_normal_texture;
5uniform sampler2D g_albedo_texture;
6uniform sampler2D g_pbr_texture;
7
8uniform sampler2D l_color_texture;
9uniform sampler2D l_bright_color_texture;
10uniform sampler2D l_depth_texture;
11
12uniform sampler2D blur1_texture;
13uniform sampler2D blur2_texture;
14
15in BLOCK {
16 vec2 tex_coords;
17} fs_in;
18
19out vec4 frag_color;
20
21void main() {
22 if (renderdebug_displayed_texture_type == TEXTURETYPE_NONE) {
23 discard;
24 }
25
26 float preview_screen_proportion = 1.0;
27 float aspect_ratio = window_width / window_height;
28 vec2 preview_size = vec2(
29 preview_screen_proportion,
30 preview_screen_proportion / aspect_ratio
31 );
32
33 if (
34 fs_in.tex_coords.x < preview_size.x &&
35 fs_in.tex_coords.y < preview_size.y
36 ) {
37 vec2 preview_tex_coords = fs_in.tex_coords / preview_size;
38 vec2 sample_p = preview_tex_coords;
39
40 vec3 color;
41 if (renderdebug_displayed_texture_type == TEXTURETYPE_G_POSITION) {
42 color = vec3(texture(g_position_texture, sample_p));
43 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_G_NORMAL) {
44 color = vec3(texture(g_normal_texture, sample_p));
45 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_G_ALBEDO) {
46 color = vec3(texture(g_albedo_texture, sample_p));
47 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_G_PBR) {
48 color = vec3(texture(g_pbr_texture, sample_p));
49 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_L_COLOR) {
50 color = vec3(texture(l_color_texture, sample_p));
51 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_L_BRIGHT_COLOR) {
52 color = vec3(texture(l_bright_color_texture, sample_p));
53 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_L_DEPTH) {
54 color = vec3(texture(l_depth_texture, sample_p));
55 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_BLUR1) {
56 color = vec3(texture(blur1_texture, sample_p));
57 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_BLUR2) {
58 color = vec3(texture(blur2_texture, sample_p));
59 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_SHADOWMAPS_3D) {
60 color = texture(shadowmaps_3d, vec4(sample_p, 0.0, 0.0)).rrr;
61 } else if (renderdebug_displayed_texture_type == TEXTURETYPE_SHADOWMAPS_2D) {
62 color = texture(shadowmaps_2d, vec3(sample_p, 0.0)).rrr;
63 }
64
65 frag_color = vec4(color, 1.0);
66 } else {
67 discard;
68 }
69}