@@ -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