I’ve banged my head towards this for too long and need to ask you guys about help.
In our game we are mixing all kinds of visual components and tries to sort them all in z-order. Now I havent been able to render the models with transparent alpha (so everything behind it is in some degree visible).
I’m stuck and cannot figure out what to do to get it working. As far as I understand it needs to be done with set_blend_func but also how I setup the depth_mask.
Ive setup a testproject if anybody is interested in looking into it deeper.
Here is our render script update function:
function update(self)
render.set_depth_mask(true)
render.set_viewport(0, 0, render.get_window_width(), render.get_window_height())
render.clear({[render.BUFFER_COLOR_BIT] = self.clear_color, [render.BUFFER_DEPTH_BIT] = 1, [render.BUFFER_STENCIL_BIT] = 0})
render.set_projection( vmath.matrix4_orthographic(
-p.render_w * p.cam.scale + p.cam.pos.x,
p.render_w * p.cam.scale + p.cam.pos.x,
-p.render_h * p.cam.scale + p.cam.pos.y,
p.render_h * p.cam.scale + p.cam.pos.y,
-1, 30000)
)
render.enable_state(render.STATE_BLEND)
render.set_blend_func(render.BLEND_SRC_ALPHA, render.BLEND_ONE_MINUS_SRC_ALPHA)
render.disable_state(render.STATE_STENCIL_TEST)
-- 3D
render.enable_state(render.STATE_CULL_FACE)
render.enable_state(render.STATE_DEPTH_TEST)
render.set_depth_mask(true)
render.draw(self.model_pred)
-- 2D (sprites, tiles, spine, particles)
render.set_depth_mask(false)
render.enable_state(render.STATE_DEPTH_TEST)
render.disable_state(render.STATE_CULL_FACE)
render.draw(self.tile_pred)
render.draw(self.particle_pred)
render.set_depth_mask(false)
render.disable_state(render.STATE_DEPTH_TEST)
render.draw_debug3d()
-- GUI
render.set_projection(vmath.matrix4_orthographic(0, render.get_window_width(), 0, render.get_window_height(), -1, 1))
render.enable_state(render.STATE_STENCIL_TEST)
render.draw(self.gui_pred)
render.draw(self.text_pred)
render.disable_state(render.STATE_STENCIL_TEST)
render.draw_debug2d()
end