Skip to content

Commit 30fd860

Browse files
committed
Always setup blend mode and all relevant states even when there is no camera
1 parent 8c0e4ed commit 30fd860

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

orthographic/render/orthographic.render_script

+22-21
Original file line numberDiff line numberDiff line change
@@ -20,40 +20,41 @@ function init(self)
2020
end
2121

2222
function update(self)
23-
2423
-- clear color
2524
render.set_depth_mask(true)
2625
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)
2731

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
3535
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)
3936
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
4447
end
45-
48+
4649
-- 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)
4753
render.set_viewport(0, 0, render.get_window_width(), render.get_window_height())
4854
render.set_view(IDENTITY)
4955
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)
5256
render.draw(self.gui_pred)
5357
render.draw(self.text_pred)
54-
render.disable_state(render.STATE_STENCIL_TEST)
55-
56-
render.set_depth_mask(false)
5758
end
5859

5960
function on_message(self, message_id, message)

0 commit comments

Comments
 (0)