Skip to content

Commit 10b8308

Browse files
committed
Fix support of OSMesa backend for Rasterizer.
1 parent d354904 commit 10b8308

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

genesis/ext/pyrender/offscreen.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,22 @@ def render(
173173
else:
174174
if flags & RenderFlags.ENV_SEPARATE:
175175
gs.raise_exception("'env_separate_rigid=True' not supported on this platform.")
176-
if normal:
177-
gs.raise_exception("'normal=True' not supported on this platform.")
178176
renderer.render(scene, flags, seg_node_map)
177+
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)
178+
glReadBuffer(GL_FRONT)
179179
if depth:
180-
depth = renderer.read_depth_buf()
180+
z_near = scene.main_camera_node.camera.znear
181+
z_far = scene.main_camera_node.camera.zfar
182+
if z_far is None:
183+
z_far = -1.0
184+
depth_arr = renderer.jit.read_depth_buf(self.viewport_height, self.viewport_width, z_near, z_far)
185+
depth_arr = renderer._resize_image(depth_arr, antialias=not seg)
181186
if flags & RenderFlags.DEPTH_ONLY:
182-
retval = (depth,)
187+
retval = (depth_arr,)
183188
else:
184-
color = renderer.read_color_buf()
185-
retval = (color, depth)
189+
color_arr = renderer.jit.read_color_buf(self.viewport_height, self.viewport_width, rgba=False)
190+
color_arr = renderer._resize_image(color_arr, antialias=not seg)
191+
retval = (color_arr, depth_arr) if depth else (color_arr,)
186192
else:
187193
retval = ()
188194

@@ -207,7 +213,16 @@ def get_program(self, vertex_shader, fragment_shader, geometry_shader=None, defi
207213
if env_separate_rigid:
208214
flags |= RenderFlags.ENV_SEPARATE
209215
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
210-
normal_arr, *_ = renderer.render(scene, flags, is_first_pass=False, force_skip_shadows=True)
216+
217+
if self._platform.supports_framebuffers():
218+
normal_arr, *_ = renderer.render(scene, flags, is_first_pass=False, force_skip_shadows=True)
219+
else:
220+
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)
221+
glReadBuffer(GL_FRONT)
222+
renderer.render(scene, flags, is_first_pass=False, force_skip_shadows=True)
223+
normal_arr = renderer.jit.read_color_buf(self.viewport_height, self.viewport_width, rgba=False)
224+
normal_arr = renderer._resize_image(normal_arr, antialias=not seg)
225+
211226
retval = (*retval, normal_arr)
212227

213228
renderer._program_cache = old_cache

0 commit comments

Comments
 (0)