@@ -20,40 +20,41 @@ function init(self)
20
20
end
21
21
22
22
function update(self)
23
-
24
23
-- clear color
25
24
render.set_depth_mask(true)
26
25
render.clear({[render.BUFFER_COLOR_BIT] = self.clear_color, [render.BUFFER_DEPTH_BIT] = 1, [render.BUFFER_STENCIL_BIT] = 0})
26
+ render.set_depth_mask(false)
27
+
28
+ -- set default blend state
29
+ render.enable_state(render.STATE_BLEND)
30
+ render.set_blend_func(render.BLEND_SRC_ALPHA, render.BLEND_ONE_MINUS_SRC_ALPHA)
27
31
28
- for _,camera_id in ipairs(camera.get_cameras()) do
29
- local viewport = camera.get_viewport(camera_id)
30
- render.set_viewport(viewport.x, viewport.y, viewport.z, viewport.w)
31
- render.set_view(camera.get_view(camera_id))
32
- render.set_projection(camera.get_projection(camera_id))
33
-
34
- render.set_depth_mask(false)
32
+ -- draw world per camera
33
+ local cameras = camera.get_cameras()
34
+ if #cameras > 0 then
35
35
render.disable_state(render.STATE_DEPTH_TEST)
36
- render.disable_state(render.STATE_STENCIL_TEST)
37
- render.enable_state(render.STATE_BLEND)
38
- render.set_blend_func(render.BLEND_SRC_ALPHA, render.BLEND_ONE_MINUS_SRC_ALPHA)
39
36
render.disable_state(render.STATE_CULL_FACE)
40
-
41
- render.draw(self.tile_pred)
42
- render.draw(self.particle_pred)
43
- render.draw_debug3d()
37
+ render.disable_state(render.STATE_STENCIL_TEST)
38
+ for _,camera_id in ipairs(cameras) do
39
+ local viewport = camera.get_viewport(camera_id)
40
+ render.set_viewport(viewport.x, viewport.y, viewport.z, viewport.w)
41
+ render.set_view(camera.get_view(camera_id))
42
+ render.set_projection(camera.get_projection(camera_id))
43
+ render.draw(self.tile_pred)
44
+ render.draw(self.particle_pred)
45
+ render.draw_debug3d()
46
+ end
44
47
end
45
-
48
+
46
49
-- draw gui in screen space using an orthographic projection
50
+ render.disable_state(render.STATE_DEPTH_TEST)
51
+ render.disable_state(render.STATE_CULL_FACE)
52
+ render.enable_state(render.STATE_STENCIL_TEST)
47
53
render.set_viewport(0, 0, render.get_window_width(), render.get_window_height())
48
54
render.set_view(IDENTITY)
49
55
render.set_projection(vmath.matrix4_orthographic(0, render.get_window_width(), 0, render.get_window_height(), -1, 1))
50
-
51
- render.enable_state(render.STATE_STENCIL_TEST)
52
56
render.draw(self.gui_pred)
53
57
render.draw(self.text_pred)
54
- render.disable_state(render.STATE_STENCIL_TEST)
55
-
56
- render.set_depth_mask(false)
57
58
end
58
59
59
60
function on_message(self, message_id, message)
0 commit comments