Skip to content

Commit 2dc14fa

Browse files
committed
Deferred combined pass
1 parent 6b75feb commit 2dc14fa

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

demosys/deferred/renderer.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ def __init__(self, width, height, gbuffer=None, lightbuffer=None):
7373
# Debug draw lights
7474
self.debug_shader = resources.shaders.get("deferred/debug.glsl", create=True)
7575

76+
# Combine shader
77+
self.combine_shader = resources.shaders.get("deferred/combine.glsl", create=True)
78+
self.quad = geometry.quad_fs()
79+
7680
def draw_buffers(self, near, far):
7781
"""
7882
Draw framebuffers for debug purposes.
@@ -139,6 +143,13 @@ def render_lights_debug(self, camera_matrix, projection):
139143
def render_geometry(self, cam_matrix, projection):
140144
raise NotImplementedError("render_geometry() not implemented")
141145

146+
def combine(self):
147+
"""Combine diffuse and light buffer"""
148+
with self.quad.bind(self.combine_shader) as s:
149+
s.uniform_sampler_2d(0, "diffuse_buffer", self.gbuffer.color_buffers[0])
150+
s.uniform_sampler_2d(1, "light_buffer", self.lightbuffer.color_buffers[0])
151+
self.quad.draw()
152+
142153
def clear(self):
143154
"""clear all buffers"""
144155
self.gbuffer.clear()
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#version 410
2+
3+
#if defined VERTEX_SHADER
4+
5+
in vec3 in_position;
6+
in vec2 in_uv;
7+
8+
out vec2 uv;
9+
10+
void main() {
11+
uv = in_uv;
12+
gl_Position = vec4(in_position, 1.0);
13+
}
14+
15+
#elif defined FRAGMENT_SHADER
16+
17+
out vec4 out_color;
18+
uniform sampler2D diffuse_buffer;
19+
uniform sampler2D light_buffer;
20+
in vec2 uv;
21+
22+
void main() {
23+
out_color = texture(diffuse_buffer, uv) * texture(light_buffer, uv);
24+
}
25+
26+
#endif

demosys/deferred/shaders/deferred/geometry.glsl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@
44

55
in vec3 in_position;
66
in vec3 in_normal;
7+
in vec2 in_uv;
78

89
uniform mat4 m_mv;
910
uniform mat4 m_proj;
1011
uniform mat3 m_normal;
1112

1213
out vec3 normal;
14+
out vec2 uv;
1315

1416
void main() {
1517
normal = m_normal * in_normal;
18+
uv = in_uv;
1619
gl_Position = m_proj * m_mv * vec4(in_position, 1.0);
1720
}
1821

@@ -22,10 +25,13 @@ layout(location=0) out vec4 out_color;
2225
layout(location=1) out vec3 out_normal;
2326

2427
in vec3 normal;
28+
in vec2 uv;
29+
30+
uniform sampler2D texture0;
2531

2632
void main() {
2733
out_normal = normal;
28-
out_color = vec4(1.0);
34+
out_color = texture(texture0, uv);
2935
}
3036

3137
#endif

demosys/deferred/shaders/deferred/light_point.glsl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,8 @@ void main() {
4949
discard;
5050
}
5151

52+
// out_light = vec4(linear_depth);
5253
out_light = vec4(1.0 - (dist / radius));
53-
// out_light = vec4(pos, 1.0);
54-
// out_light = vec4(viewRay, 1.0);
5554
}
5655

5756
#endif

0 commit comments

Comments
 (0)