Exemplo n.º 1
0
 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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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]
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
    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
Exemplo n.º 13
0
    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()
Exemplo n.º 14
0
    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()
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
 def reload_shaders(self):
     blur_shader = self.load_plugin_shader("sssss_blur.frag.glsl")
     for target in itervalues(self._targets):
         target.shader = blur_shader
Exemplo n.º 17
0
 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
Exemplo n.º 18
0
 def reload_shaders(self):
     sharpen_shader = self.load_plugin_shader("sharpen.frag.glsl")
     for target in itervalues(self._targets):
         target.shader = sharpen_shader
Exemplo n.º 19
0
 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
Exemplo n.º 20
0
 def reload_shaders(self):
     blur_shader = self.load_plugin_shader("sssss_blur.frag.glsl")
     for target in itervalues(self._targets):
         target.shader = blur_shader
Exemplo n.º 21
0
 def set_active(self, active):
     """ Enables or disables all targets bound to this stage """
     for target in itervalues(self._targets):
         target.active = active
Exemplo n.º 22
0
 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)
Exemplo n.º 23
0
 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()
Exemplo n.º 24
0
 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 = {}
Exemplo n.º 25
0
 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)
Exemplo n.º 26
0
 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 = {}
Exemplo n.º 27
0
 def reload_shaders(self):
     sharpen_shader = self.load_plugin_shader("sharpen.frag.glsl")
     for target in itervalues(self._targets):
         target.shader = sharpen_shader