#1
|
|||
|
|||
post-processing effect to single object
Hi,
I need to access the currently displayed pixels on screen within a fragment shader. For which i found the access through vizard's post-processing at http://docs.worldviz.com/vizard/postprocess_basics.htm using vizpp_InputTex. However it only refers to shader which are applied on whole screen. How can I apply the the shader using postprocess to only specific objects? Something like this : effect = RedEffect() object.apply(effect) In which case only the object should have redeffect applied to it and rest of objects should have no effect. |
#3
|
|||
|
|||
Thanks Jeff. The Effects might solve what I am looking for.
|
#4
|
|||
|
|||
Hi Jeff,
The custom effect work on pre-existing models like 'logo.osgb' But effects do not work on on-the fly object. Do i need to set some flag for on-the fly object for enabling effects on them as well? |
#5
|
|||
|
|||
Yes, you will need to use the generateEffects command on that model. Here's an example:
Code:
import viz import vizfx import vizcam import vizshape viz.setMultiSample(4) viz.go() viz.clearcolor(viz.SLATE) # Disable head light viz.MainView.getHeadLight().disable() # Add a directional light pointing down light = vizfx.addDirectionalLight(euler=(0,90,0), color=[0.2,0.2,0.2]) shape = vizshape.addPyramid(base=(0.4,0.4),height=0.4) composer = vizfx.getComposer() shape.generateEffects(composer=composer) cam = vizcam.PivotNavigate(distance=3.5) cam.centerNode(shape) code = ''' Effect { Type Highlight Shader { BEGIN FinalColor gl_FragColor.rgb += vec3(0.7, 0.0, 0.0); END } } ''' effect = viz.addEffect(code) shape.apply(effect) |
#6
|
|||
|
|||
Thanks Jeff.
It worked with on-the-fly object. With models creating using external application like :http://www.openscenegraph.org/index....planet-builder . Do I need to run any other command to enable effects on such models? |
#7
|
|||
|
|||
Additional Info :
If I create a separate copy of root node and apply effects only on it then the effects work. However if I apply the effects on the entire directory structure where root node load the child nodes itself then the effects do not work. I tried using different argument values for flags and op in generateEffects but still no success |
#8
|
|||
|
|||
Can you provide a sample file and code that reproduces the issue?
|
#9
|
|||
|
|||
Jeff,
I am using the following code to test the effect on my model. A subset of model with the code file is in attachment. Execute the shader_test.py to see that no effect is applied on the model. However if I remove "Earth/main_root_L0_X0_Y0" folder then the effect start working. Code:
import viz,vizfx viz.go() model=vizfx.addChild('./Earth/main.osgb') viz.MainView.setPosition(2270347.75*2, 3137376.25*2, 7425973.0*2) viz.MainView.lookAt([0,0,0]) composer=vizfx.getComposer() model.generateEffects(composer=composer) code=""" Effect { Float rmin{value 0} Float rmax{value 255} Float gmin{value 0} Float gmax{value 255} Float bmin{value 0} Float bmax{value 255} Shader{ BEGIN FinalColor float r=(vizfx_VertexColor.r-rmin)*255/(rmax-rmin); float g=(vizfx_VertexColor.g-gmin)*255/(gmax-gmin); float b=(vizfx_VertexColor.b-bmin)*255/(bmax-bmin); gl_FragColor.rgb=vec3(r,g,b); END } } """ effect=viz.addEffect(code) model.apply(effect) model.setUniformFloat('bmin',50) |
#10
|
|||
|
|||
Quote:
Because all the examples work specifically with pixel in question and not include any effect using neighboring pixel value which would be needed for implementing functions like blur. |
Tags |
effects, object, post process, shader |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Crosshatch Post-Processing Effect give away | Vaquero | Vizard | 0 | 08-03-2016 09:48 PM |
anaglyph effect at front view of cave | g.vannan | Vizard | 1 | 02-03-2015 05:29 AM |
retrieve Object names | Geoffrey | Vizard | 11 | 12-11-2009 04:26 AM |
importing a single WRL with many objects. | giancamati | Vizard | 3 | 12-18-2006 01:13 PM |
rotate to object | jargon | Vizard | 1 | 08-08-2005 12:20 PM |