View Single Post
  #2  
Old 02-22-2011, 12:17 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
The following scripts shows how to use the post-process module to apply a contrast shader to the right eye. Let me know if anything is unclear.
Code:
import viz
viz.go(viz.STEREO_HORZ)

viz.add('gallery.ive')

import vizpp

left_frag = """
uniform sampler2D vizpp_InputTex;
void main()
{
	gl_FragColor = texture2D(vizpp_InputTex,gl_TexCoord[0].xy);
}
"""

right_frag = """
uniform sampler2D vizpp_InputTex;
uniform float contrast;
void main()
{
	vec4 color = texture2D(vizpp_InputTex,gl_TexCoord[0].xy);
	gl_FragColor.rgb = mix(vec3(0.5,0.5,0.5),color.rgb,contrast);
	gl_FragColor.a = color.a;
}
"""

class StereoEffect(vizpp.PostProcessEffect):

	def _setupEffect(self):
		self._contrast = viz.addUniformFloat('contrast',1.0)
		self._leftShader = viz.addShader(frag=left_frag)
		self._rightShader = viz.addShader(frag=right_frag)
		self._rightShader.attach(self._contrast)

	def _applyEffect(self,data):
		if data.eye == viz.RIGHT_EYE:
			data.overlay.apply(self._rightShader)
		else:
			data.overlay.apply(self._leftShader)

	def setContrast(self,value):
		self._contrast.set(value)

	def getContrast(self):
		return self._contrast.get()

effect = StereoEffect()
effect.setContrast(2.0)

vizpp.addEffect(effect)
Reply With Quote