summaryrefslogtreecommitdiff
path: root/src/renderer/renderpasses.h
blob: 5a5ffeefe13525fd67950cc381fdbbdf4729d534 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
 * @file renderpasses.h
 * @author your name (you@domain.com)
 * @brief Built-in renderpasses to the engine
 * @version 0.1
 * @date 2024-04-28
 *
 * @copyright Copyright (c) 2024
 *
 */
#pragma once
#include "ral.h"
#include "ral_types.h"
#include "render_types.h"

// Shadowmap pass
// Blinn-phong pass
// Unlit pass
// Debug visualisations pass

// Don't need to pass in *anything*.
gpu_renderpass* renderpass_blinn_phong_create();
void renderpass_blinn_phong_execute(gpu_renderpass* pass, render_entity* entities,
                                    size_t entity_count);


typedef struct ren_shadowmaps {
  u32 width;
  u32 height;
  gpu_renderpass* rpass;
  gpu_pipeline* static_pipeline;
  gpu_pipeline* debug_quad;
  texture_handle depth_tex;
} ren_shadowmaps;

typedef struct model_uniform {
  mat4 model;
} model_uniform;
typedef struct lightspace_tf_uniform {
  mat4 lightSpaceMatrix;
} lightspace_tf_uniform;

typedef struct debug_quad_uniform {
 texture_handle depthMap;
} debug_quad_uniform;

shader_data_layout model_uniform_layout(void* data);
shader_data_layout lightspace_uniform_layout(void* data); 
shader_data_layout debug_quad_layout(void* data);

void ren_shadowmaps_init(ren_shadowmaps* storage);

gpu_renderpass* shadowmaps_renderpass_create();
gpu_pipeline* shadowmaps_pipeline_create(gpu_renderpass* rpass);

void renderpass_shadowmap_execute(gpu_renderpass* pass, render_entity* entities, size_t entity_count);