Difference between revisions of "TEST-STRCMP4CODES"

From SimsWiki
Jump to: navigation, search
Line 1: Line 1:
EP5-SS
 
0xCD7FE87A
 
0x1C0532FA
 
0x59C623B0
 
0xFF886B27
 
# contentviewer
 
 
 
#
 
#
 
# Various material definitions for the ContentViewer.
 
# Various material definitions for the ContentViewer.

Revision as of 04:37, 7 September 2007

  1. Various material definitions for the ContentViewer.
  1. note: don't check this in -- seems to cause a crash if
  2. you don't have the debugger set up correctly
  3. enableShaderProgramDebugging -vertex
  1. anything extra needed by the contentviewer should be moved
  2. from config.matShad to common.matShad.
  3. include "config.matshad"
  1. Lab extension stuff

define ShowRenderTypeMaterial()

  material
     shader
        viewerRenderTypePred viewerRenderType
        pass -fixedFunction            
           ffMatCoef -diff (1, 0, 0)
           seti rt (viewerRenderType + 1)
           setc rtColor ((floor($rt / 4) % 2), (floor($rt / 2) % 2), (floor($rt) % 2))
           ffMatCoef -diff $rtColor
           create LightingStates()
           
           stage
              textureBlend select(diffuse) select(diffuse)
           end
        end
     end
  end

enddef

define TestGlow-AsmVertexProgram(numPass)

  vertexFormatPred position 0 true
  shaderProgram -target vertexProgram -method assemble
     bindConstants 0 -bindingID geomToCamera -constantCount 3
     bindConstants 3 -bindingID cameraToClip -constantCount 4
     shaderSource
        vs_1_1
        dcl_position v0
        dcl_normal   v1
        def c7,$color,0
        def c8,$offset,0
        def c9,$glowOffset,0
        def c10,$glowColor
        def c11, &{numPass},&{numPass},&{numPass},0
        
        add r0, v0, c8     ; add the offset
        
        ; add the glow offset along the normal
        mov  r1, c9
        mov  r2, v1
        mul  r0, c11, r1   ; numPass * glowOffset
        mad  r0, r2, r0, v0 ; (numPass * glowOffset * normal) + pos
        add  r0, r0, c8     ; (numPass * glowOffset * normal) + pos + offset
        
        m4x3 r1.xyz, r0, c0
        mov  r1.w,   v0.w
        m4x4 oPos,   r1, c3
        mov  r2,     c7
        add  oD0,    r2, c10
     endShaderSource
  end

enddef

define SimpleVS()

  # vertex program
  shaderProgram -target vertexProgram -method assemble
     bindConstants 0 -bindingID geomToCamera -constantCount 3
     bindConstants 3 -bindingID cameraToClip -constantCount 4
     
     shaderSource
        vs_1_1
        dcl_position v0
        
        def c7,$color
        
        m4x3 r1.xyz, v0, c0
        mov  r1.w,   v0.w
        
        m4x4 oPos,   r1, c3         
        mov  oD0,    c7
     endShaderSource
  end

enddef

define SimplePS()

  # pixel program
  shaderProgram -target pixelProgram -method assemble
     shaderSource
        ps_1_1
        mov r0, v0
     endShaderSource
  end

enddef

setb glowEnabled false define MaterialWithGlow()

  1. test material for glow effect
  seti maxRenderTargets (queryIntegerGraphicsDeviceCap(numSimultaneousRTs))
  
  material
     shader
        if ($maxRenderTargets > 1) # MRTs allowed, write out two color values in a single pass         
           pass
              renderTarget viewerRenderTarget -colorBuffers 2  # use two of the color buffers from the glow texture 
              vertexFormatPred position 0 true
              
              # vertex program
              shaderProgram -target vertexProgram -method assemble
                 bindConstants 0 -bindingID geomToCamera -constantCount 3
                 bindConstants 3 -bindingID cameraToClip -constantCount 4
                 
                 shaderSource
                    vs_3_0
                    dcl_position v0
                    dcl_position0 o0
                    dcl_color o1
                    
                    def c7,$color
                    
                    m4x3 r1.xyz, v0, c0
                    mov  r1.w,   v0.w
                    
                    m4x4 o0,   r1, c3         
                    mov  o1,   c7
                 endShaderSource
              end
              
              # pixel program
              shaderProgram -target pixelProgram -method assemble
                 shaderSource
                    ps_3_0
                    
                    dcl_color v0
                    mov oC0, v0
                    mov oC1, v0
                 endShaderSource
              end
           end
        else   # only one render target allowed, use two passes
           if ($glowEnabled)
              pass # 1
                 # render object to glow buffer
                 renderTarget viewerRenderTarget
                 
                 vertexFormatPred position 0 true               
                 create SimpleVS()
                 create SimplePS()
              end
           endif         
        
           pass # 2
              # render object to backbuffer
              # Note: The backbuffer rendering pass should generally come after
              # all passes that render to other textures.
              # This is so that the render target is set to the backbuffer for 
              # the next object to be rendered (which may not explicitly set it).
              renderTarget viewerCompositingTarget
              
              vertexFormatPred position 0 true            
              create SimpleVS()
              create SimplePS()
           end
        endif
     end
  end

enddef


if (not varExists(mvMaterialDefinition))

 set mvMaterialDefinition  StandardMaterial

endif

materialDefinition MVLab-CubeMat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef (0, 0, 1)

end

materialDefinition "MVLab-SphereMat"

  setDefinition $mvMaterialDefinition

end

materialDefinition "MVLab-ConeMat"

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef (1, 0.5, 0)

end

materialDefinition MVLab-CylinderMat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef (1, 1, 0)

end

materialDefinition MVLab-MeshMat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef (0, 0, 1)   

end

materialDefinition MVLab-CylinderTopMat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $blue

end

materialDefinition MVLab-CylinderBottomMat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $blue

end

materialDefinition MVLab-CylinderPanel0Mat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $green

end

materialDefinition MVLab-CylinderPanel1Mat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $yellow

end

materialDefinition MVLab-CylinderPanel2Mat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $purple

end

materialDefinition MVLab-CylinderPanel3Mat

  setDefinition $mvMaterialDefinition
  addParam stdMatDiffCoef $red

end



  1. Render to texture stuff

set mvAspect 1 set mvOffset ((1 - $mvAspect) / 2)

define MVLab-RenderToTexture()

  material
     shader
        vertexFormatPred position 0 true
        pass -fixedFunction
           create LightingStatesNoStdLights()
           colorScalar (0.8, 0.8, 1, 1)
           stage
              texture "MVLab-RenderTargetTexture"
              textureFilterHint bilinear bilinear
              textureMIPFilterHint disabled
              textureAddressing clamp clamp clamp
           
              ffTextureMatrix -scalev (1, $mvAspect) -trans (0, $mvOffset)
              textureTransformType vector2
              
              textureBlend multiply(texture colorScalar) select(texture)
           end 
        end
     end
  end

enddef

  1. Doesn't perform any reflection itself -- merely texture maps
  2. a screen-size texture onto geometry.
  1. TODO: we should set a script variable or predicate
  2. if hardware vertex shaders are not available.

define MVLab-RenderToTextureReflection()

  material
     shader
        vertexFormatPred position 0 true
        pass -fixedFunction
           
           colorScalar (0.8, 0.8, 1, 1)
           
           stage
              ffTextureCoordsSource fromPosition
              ffTextureMatrix -cameraToClip -scalev (-0.5, (0.5 * -$mvAspect)) -trans (0.5, 0.5)
              textureTransformType vector4 homogeneous
           
              texture  "MVLab-RenderTargetTexture"
              textureBlend multiply(texture colorScalar) select(texture)
           end 
        end
     end
  end

enddef


  1. Used to clear the glow render target texture.
  2. by varying 'feedback', you control how much of
  3. the previous frame feeds through into the current.

setf feedback 0.5 define MVLab-Dimmer()

  material
     shader -layer -31
        vertexFormatPred position 0 true


        pass                        
           shaderProgram -target vertexProgram -method assemble
       

bindConstants 0 -bindingID immediateData -data (((1 - $mvAspect) / 2), $mvAspect, 1, 1)

shaderSource

vs_1_1 dcl_position0 v0 dcl_texcoord0 v1

mov r0.x, -v0.x mov r0.y, v0.z mov r0.zw, c0

mov oPos, r0

mov oT0.x, v1.x mul r0.y, v1.y, c0.y add oT0.y, r0.y, c0.x

endShaderSource

           end 
           colorScalar (0, 0, 0, (1 - $feedback))
           cullmode none
           depthTest false
           
           alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)
           stage
              textureBlend select(colorScalar) select(colorScalar)
           end 
        end
     end
  end

enddef

set visualizationTexture "UVVisualization" define MV-UVVisualization()

  material
     shader
        pass -fixedFunction
           stage
              texture $visualizationTexture
              textureBlend select(texture) select(texture)
           end
        end  # pass
     end  # shader
  end  # material

enddef

materialDefinition MVLab-RenderTargetMaterial

  setDefinition MVLab-RenderToTexture

end

materialDefinition MVLab-RenderTargetReflectionMaterial

  setDefinition MVLab-RenderToTextureReflection

end

materialDefinition MVLab-RenderTargetGlowMaterial

  setDefinition MVLab-Dimmer
  addParam feedback 0.8

end

materialDefinition MVLab-DimmerMaterial

  setDefinition MVLab-Dimmer
  addParam feedback 0.8

end

  1. Test of skybox compositing pass.

materialDefinition MVLab-CompositingPass0Material

  setDefinition SkyboxCompositionPassMaterial
  addParam skyboxCubeTexture reflectionoutdoorwater-envcube

end

materialDefinition MVLab-LightingTest

  setDefinition StandardMaterial
  addParam stdMatDiffCoef (0.5, 0.5, 0.5)

end

materialDefinition MV-UVVisualizationMaterial

  setDefinition MV-UVVisualization

end

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox