camera / shader ">

example(s) -- camera / shader


  
  DEF WorldInfo WorldInfo {
          title "Scene Rendering wit postprocess shader"
          info [ 
                    "(c) 2006 Holger Grahn - hg @ snafu.de"
                  "some Shader ideas from ATI RenderMonkey ScreenSpace Effects"
          ]
  } 
  
  DEF        RESOURCES Switch {
          whichChoice        -1
          choice [
          
          ]
  }
  
  Background { skyColor [ 0.2 0.2 0.2 ] }
  
  NavigationInfo { 
          headlight FALSE speed 1.0 
          type [ "WALK" "ANY" ]
  }
  
  Background { skyColor [ 0 0 0 ] }
  DEF VIEWPOINT  Viewpoint
  {
          position        0 0 1.0
          ##orientation        0 1 0  0.0405898
          ##fieldOfView        0.95993
  }
  
  

render


  
  DEF GROUP_RENDER GroupRenderToTexture {
          children
  
          # the scene to render 
          DEF SCENE Inline { url "wrl/shader-camera.wrl" }
  
          # scene is rendered to this texture 
          outputTexture DEF OUTPUT_TEXTURE CompositeTexture3D 
          { 
                  pixelWidth 512
                  pixelHeight 512
          
          }
  
  

shader


          # render the output image by using          OUTPUT_TEXTURE
  
          outputChildren 
  
          Shape {
                  appearance DEF ShaderAppearance ShaderAppearance {
                          transparent FALSE
  
                          vertexShader  DEF VertexShader VertexShader 
                          {
                                  url "hlsl:        
                                  float4x4 modelViewProjectionT;
  
                                  struct VS_OUTPUT
                                  {
                              float4 Pos  : POSITION;
                              float2 Tex  : TEXCOORD0;
  
                                  };
  
                                  VS_OUTPUT main (
                              float4 Pos  : POSITION, 
                              float3 Norm : NORMAL, 
                              float2 Tex  : TEXCOORD0
                                  )
                                  {
                              VS_OUTPUT Out = (VS_OUTPUT)0;
  
                              Out.Pos  = mul(Pos,modelViewProjectionT);   // position (projected)
                                  //Out.Tex = Tex;
                                  Out.Tex = float2(Tex.x,1.0f-Tex.y); // Y FLIP
  
                              return Out;
                                  }
                                  "
                          }
  
                          fragmentShader 
                          DEF FragmentShader FragmentShader 
                          {
                                  exposedField SFFloat time 1
                                  field SFNode image USE OUTPUT_TEXTURE
  
                                  url [ 
                                  "local/shader/outline.phl"
                                  ]
                          }
  
                  }
  
                  geometry 
                  Rectangle { }
                  # Box { size        2 2 2 }
          }
  }
  DEF _TimeSensor TimeSensor {
          cycleInterval 1
          loop TRUE 
          startTime 0
  
  }
  ROUTE _TimeSensor.fraction_changed TO FragmentShader.time