There are no exposed uniform variables since the IDLgrShaderConvol3 object exposes its uniform variables as properties. When you call SetProperty for one of the convolution shader’s properties, it calls SetUniformVariable internally. See IDLgrShaderConvol3 Properties for information on the BASE_BLEND_FACTOR, CONVOL_BLEND_FACTOR, and KERNEL properties.

If you look in idlgrshaderconvol3__define.pro located in the lib subdirectory of the IDL distribution, you will see the following uniform variables in the fragment shader program:

uniform sampler2D _IDL_ImageTexture
uniform float BaseBlend
uniform float ConvolBlend
uniform vec2 _IDL_ImageStep
uniform vec4 kernel[9]

The BaseBlend, ConvolBlend and kernel variables relate to object properties. The _IDL_ImageTexture refers to the base IDLgrImage object and _IDL_ImageStep is used by the convolution filtering operation. Both are reserved uniform variables.

See Filter Chain Shaders for more information.

Hardware Shader Program for Filter Chain Example


The fragment and vertex shader programs are incorporated into the IDLgrShaderConvol3 object definition file, idlgrshaderconvol3__define.pro, located in the lib subdirectory of the IDL distribution.

Software Fallback for the Filter Chain Shader


The IDLgrShaderConvol3 object definition file includes a software fallback option that can be exercised using the IDLgrFilterChain FORCE_FILTER property. Set the property either on object creation or in the FilterChain object’s Init method. For example, to use the shader_filterchain_doc example with the software fallback, create the object as follows:

obj=OBJ_NEW('shader_filterchain_doc', /FORCE_FILTER)

Switching the value of the FORCE_FILTER property between 0 and 1 in this example allows you to see the execution speed differences between the hardware and software versions of the filter chain. When you create a shader_filterchain_doc object and select mineral.png, you can apply one or more convolution shaders and modify shader parameters as shown in the following figure.