WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Texture ID in postprocess (https://forum.worldviz.com/showthread.php?t=5238)

mellott124 11-24-2014 09:25 PM

Texture ID in postprocess
 
When working with shaders in Vizard outside of the postprocess library I can set the Texture ID using viz.setUniformInt('texture',0).

How is this done when I define a class derived from postprocess effect library? Also at what texture ID does vizpp_InputTex sit at? Seems with the postprocess examples there's never any reference to the texture ID. I need to know what the IDs of vizpp_InputTex, redTex, greenTex, and blueTex are.

Beginning of my class below

class warp(vizfx.postprocess.BaseShaderEffect):

def _getFragmentCode(self):
return """
#version 120
uniform sampler2D vizpp_InputTex;
uniform sampler2D redTex;
uniform sampler2D blueTex;
uniform sampler2D greenTex;


etc...

farshizzo 11-25-2014 08:08 AM

You can add textures through the uniforms attribute of the effect class within the _createUniforms method. Here is a simple example:

Code:

class WarpEffect(vizfx.postprocess.BaseShaderEffect):

        def _getFragmentCode(self):
                return """
                uniform sampler2D vizpp_InputTex;
                uniform sampler2D redTex;
                uniform sampler2D blueTex;
                uniform sampler2D greenTex;
                void main()
                {
                        vec2 uv = gl_TexCoord[0].st;
                        vec4 color = vec4(1.0);
                        color.r = texture2D(vizpp_InputTex, texture2D(redTex, uv).rg).r;
                        color.g = texture2D(vizpp_InputTex, texture2D(greenTex, uv).rg).g;
                        color.b = texture2D(vizpp_InputTex, texture2D(blueTex, uv).rg).b;
                        gl_FragColor = color;
                }
                """

        def _createUniforms(self):
               
                # Create texture objects
                redTex = viz.addTexture(...)
                greenTex = viz.addTexture(...)
                blueTex = viz.addTexture(...)
               
                # Apply textures to effect (automatically assigns uniform IDs)
                self.uniforms.addTexture('redTex', redTex)
                self.uniforms.addTexture('greenTex', greenTex)
                self.uniforms.addTexture('blueTex', blueTex)


Have a look at the Post-Process basics page in the documentation for more info:

http://docs.worldviz.com/vizard/postprocess_basics.htm


All times are GMT -7. The time now is 01:53 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC