PDA

View Full Version : <node3d:renderNode>.attachTexture and <node3d>.texture


whj
04-26-2010, 01:37 PM
Hello,

I'm confused by commands attachTexture() and texture(). Anybody could explain the difference between them? Here is sample code:


for eye in [viz.RENDER_LEFT,viz.RENDER_RIGHT]:

#Render textures for ping-ponging
tex1 = viz.addRenderTexture()
tex2 = viz.addRenderTexture()

"""
Pass 1 renders the normal scene to a texture
"""
pass1 = viz.addRenderNode(size=[size,size])
pass1.attachTexture(tex1)
pass1.setOrder(viz.PRE_RENDER,-5)
pass1.disable(eye)

"""
Pass 2 renders the texture from pass 1 onto a quad.
The quad has a shader attached which blurs the texture horizontally.
"""
pass2 = viz.addRenderNode()
pass2.setHUD(0,200,0,200,renderQuad=True)
pass2.setSize(size,size)
pass2.setBuffer(viz.RENDER_FBO)
pass2.setOrder(viz.PRE_RENDER,-4)
pass2.attachTexture(tex2)
pass2.texture(tex1)
pass2.apply(horzBlurShader)
pass2.apply(srcImageUniform)
pass2.apply(blurScaleUniform)
pass2.disable(eye)

"""
Pass 3 renders the texture from pass 2 onto a quad.
The quad has a shader attached which blurs the texture vertically.
"""
pass3 = viz.addRenderNode()
pass3.setHUD(0,200,0,200,renderQuad=True)
pass3.setSize(size,size)
pass3.setBuffer(viz.RENDER_FBO)
pass3.setOrder(viz.PRE_RENDER,-3)
pass3.attachTexture(tex1)
pass3.texture(tex2)
pass3.apply(vertBlurShader)
pass3.apply(srcImageUniform)
pass3.apply(blurScaleUniform)
pass3.disable(eye)

"""
Pass 4 renders the final blurred texture to the screen
"""
pass4 = viz.addRenderNode()
pass4.setHUD(0,200,0,200,renderQuad=True)
pass4.setOrder(viz.POST_RENDER,-1)
pass4.texture(tex1)
pass4.disable(eye)

#Save render nodes and blur uniform
d.passes += [pass1,pass2,pass3,pass4]



Thanks a lot.