def active(self, state): """ Enables or disables this stage. In case the stage is disabled, it will not get updated anymore, and all stages are distabled """ if self._active != state: self._active = state for target in itervalues(self._targets): target.active = self._active
def create_textures(self): """ Creates all textures required for the scattering """ tex_format = "RGBA32" if self.use_32_bit else "RGBA16" img_2d, img_3d = Image.create_2d, Image.create_3d self.textures = { "transmittance": img_2d("scat-trans", self.trans_w, self.trans_h, tex_format), "irradiance": img_2d("scat-irrad", self.sky_w, self.sky_h, tex_format), "inscatter": img_3d("scat-inscat", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), # noqa # pylint: disable=line-too-long "delta_e": img_2d("scat-dx-e", self.sky_w, self.sky_h, tex_format), "delta_sr": img_3d("scat-dx-sr", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), "delta_sm": img_3d("scat-dx-sm", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), "delta_j": img_3d("scat-dx-j", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), } for img in itervalues(self.textures): img.set_minfilter(SamplerState.FT_linear) img.set_magfilter(SamplerState.FT_linear) img.set_wrap_u(SamplerState.WM_clamp) img.set_wrap_v(SamplerState.WM_clamp) img.set_wrap_w(SamplerState.WM_clamp)
def active(self, state): """ Enables or disables this stage. In case the stage is disabled, it will not get updated anymore, and all stages are distabled """ if self._active != state: self._active = state for target in itervalues(self._targets): target.active = self._active
def remove(self): """ Deletes this buffer, restoring the previous state """ self._internal_buffer.clear_render_textures() self.engine.remove_window(self._internal_buffer) self._active = False for target in itervalues(self._targets): target.release_all() RenderTarget.REGISTERED_TARGETS.remove(self)
def remove(self): """ Deletes this buffer, restoring the previous state """ self._internal_buffer.clear_render_textures() self.engine.remove_window(self._internal_buffer) self._active = False for target in itervalues(self._targets): target.release_all() RenderTarget.REGISTERED_TARGETS.remove(self)
def disable_plugin(self, plugin_id): """ Disables a plugin, given its plugin_id. This will remove it from the list of enabled plugins, if it ever was there """ if plugin_id in self.enabled_plugins: self.warn("Disabling", plugin_id) self.enabled_plugins.remove(plugin_id) for instance in itervalues(self.instances): if plugin_id in instance.required_plugins: self.disable_plugin(instance.plugin_id) if plugin_id in self.instances: del self.instances[plugin_id]
def _setup_textures(self): """ Prepares all bound textures """ for i in range(self._aux_count): self._targets["aux_{}".format(i)] = Texture( self.debug_name + "_aux{}".format(i)) for tex in itervalues(self._targets): tex.set_wrap_u(SamplerState.WM_clamp) tex.set_wrap_v(SamplerState.WM_clamp) tex.set_anisotropic_degree(0) tex.set_x_size(self._size.x) tex.set_y_size(self._size.y) tex.set_minfilter(SamplerState.FT_linear) tex.set_magfilter(SamplerState.FT_linear)
def _setup_textures(self): """ Prepares all bound textures """ for i in range(self._aux_count): self._targets["aux_{}".format(i)] = Texture(self.debug_name + "_aux{}".format(i)) for tex in itervalues(self._targets): tex.set_wrap_u(SamplerState.WM_clamp) tex.set_wrap_v(SamplerState.WM_clamp) tex.set_anisotropic_degree(0) tex.set_x_size(self._size.x) tex.set_y_size(self._size.y) tex.set_minfilter(SamplerState.FT_linear) tex.set_magfilter(SamplerState.FT_linear)
def stage_information(self): """ Returns the amount of attached stages, and also the memory consumed in MiB in a tuple. """ count, memory = 0, 0 for entry in self.entries: if isinstance(entry, Texture): memory += entry.estimate_texture_memory() count += 1 elif entry.__class__.__name__ == "RenderTarget": for target in itervalues(entry.targets): memory += target.estimate_texture_memory() count += 1 else: self.warn("Unkown type:", entry.__class__.__name__) return memory, count
def stage_information(self): """ Returns the amount of attached stages, and also the memory consumed in MiB in a tuple. """ count, memory = 0, 0 for entry in self.entries: if isinstance(entry, Texture): memory += entry.estimate_texture_memory() count += 1 elif entry.__class__.__name__ == "RenderTarget": for target in itervalues(entry.targets): memory += target.estimate_texture_memory() count += 1 else: self.warn("Unkown type:", entry.__class__.__name__) return memory, count
def update(self): # First, disable all targets for target in itervalues(self._targets): target.active = False # Check for updated faces for i in range(6): if self._pipeline.task_scheduler.is_scheduled("envprobes_capture_envmap_face" + str(i)): self.regions[i].set_active(True) # Check for filtering if self._pipeline.task_scheduler.is_scheduled("envprobes_filter_and_store_envmap"): self.target_store.active = True self.target_store_diff.active = True self.filter_diffuse_target.active = True for target in self.filter_targets: target.active = True
def update(self): # First, disable all targets for target in itervalues(self._targets): target.active = False # Check for updated faces for i in range(6): if self._pipeline.task_scheduler.is_scheduled("envprobes_capture_envmap_face" + str(i)): self.regions[i].set_active(True) # Check for filtering if self._pipeline.task_scheduler.is_scheduled("envprobes_filter_and_store_envmap"): self.target_store.active = True self.target_store_diff.active = True self.filter_diffuse_target.active = True for target in self.filter_targets: target.active = True
def _perform_update(self): """ Collects all entries, extracts their images and re-renders the window """ # Collect texture stages self._stages = [] for entry in sorted(self.entries, key=lambda entry: entry.sort): if isinstance(entry, Texture): if self._display_images: self._stages.append(entry) # Can not use isinstance or we get circular import references elif entry.__class__.__name__ == "RenderTarget": for target in itervalues(entry.targets): self._stages.append(target) else: self.warn("Unrecognized instance!", entry.__class__) self._render_stages()
def _perform_update(self): """ Collects all entries, extracts their images and re-renders the window """ # Collect texture stages self._stages = [] for entry in sorted(self.entries, key=lambda entry: entry.sort): if isinstance(entry, Texture): if self._display_images: self._stages.append(entry) # Can not use isinstance or we get circular import references elif entry.__class__.__name__ == "RenderTarget": for target in itervalues(entry.targets): self._stages.append(target) else: self.warn("Unrecognized instance!", entry.__class__) self._render_stages()
def create_textures(self): """ Creates all textures required for the scattering """ tex_format = "RGBA32" if self.use_32_bit else "RGBA16" img_2d, img_3d = Image.create_2d, Image.create_3d self.textures = { "transmittance": img_2d("scatt-transmittance", self.trans_w, self.trans_h, tex_format), "irradiance": img_2d("scatt-irradiance", self.sky_w, self.sky_h, tex_format), "inscatter": img_3d("scatt-inscatter", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), "delta_e": img_2d("scatt-dx-e", self.sky_w, self.sky_h, tex_format), "delta_sr": img_3d("scatt-dx-sr", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), "delta_sm": img_3d("scatt-dx-sm", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), "delta_j": img_3d("scatt-dx-j", self.res_mu_s_nu, self.res_mu, self.res_r, tex_format), } for img in itervalues(self.textures): img.set_minfilter(SamplerState.FT_linear) img.set_magfilter(SamplerState.FT_linear) img.set_wrap_u(SamplerState.WM_clamp) img.set_wrap_v(SamplerState.WM_clamp) img.set_wrap_w(SamplerState.WM_clamp)
def reload_shaders(self): blur_shader = self.load_plugin_shader("sssss_blur.frag.glsl") for target in itervalues(self._targets): target.shader = blur_shader
def reset_plugin_settings(self, plugin_id): """ Resets all settings of a given plugin """ for setting in itervalues(self.settings[plugin_id]): setting.value = setting.default
def reload_shaders(self): sharpen_shader = self.load_plugin_shader("sharpen.frag.glsl") for target in itervalues(self._targets): target.shader = sharpen_shader
def reset_plugin_settings(self, plugin_id): """ Resets all settings of a given plugin """ for setting in itervalues(self.settings[plugin_id]): setting.value = setting.default
def reload_shaders(self): blur_shader = self.load_plugin_shader("sssss_blur.frag.glsl") for target in itervalues(self._targets): target.shader = blur_shader
def set_active(self, active): """ Enables or disables all targets bound to this stage """ for target in itervalues(self._targets): target.active = active
def set_shader_input(self, *args): """ This method sets a shader input on all stages, which is mainly used by the stage manager """ for target in itervalues(self._targets): target.set_shader_input(*args)
def handle_window_resize(self): """ This method gets called when the window gets resized. By default, this just resizes all render targets. """ self.set_dimensions() for target in itervalues(self._targets): target.consider_resize()
def cleanup_states(self): self._main_cam_node.node().clear_tag_states() for container in itervalues(self.containers): for camera in container.cameras: camera.clear_tag_states() container.tag_states = {}
def set_shader_input(self, *args): """ This method sets a shader input on all stages, which is mainly used by the stage manager """ for target in itervalues(self._targets): target.set_shader_input(*args)
def cleanup_states(self): self._main_cam_node.node().clear_tag_states() for container in itervalues(self.containers): for camera in container.cameras: camera.clear_tag_states() container.tag_states = {}
def reload_shaders(self): sharpen_shader = self.load_plugin_shader("sharpen.frag.glsl") for target in itervalues(self._targets): target.shader = sharpen_shader