Difference between revisions of "TEST-STRCMP4CODES"
| Line 1: | Line 1: | ||
| + | EP5-SS | ||
| + | 0xCD7FE87A | ||
| + | 0x1C0532FA | ||
| + | 0x59C623B0 | ||
| + | 0xFF886B27 | ||
| + | # contentviewer | ||
| + | # | ||
| + | # Various material definitions for the ContentViewer. | ||
| + | # | ||
| + | |||
| + | # note: don't check this in -- seems to cause a crash if | ||
| + | # you don't have the debugger set up correctly | ||
| + | #enableShaderProgramDebugging -vertex | ||
| + | |||
| + | # anything extra needed by the contentviewer should be moved | ||
| + | # from config.matShad to common.matShad. | ||
| + | #include "config.matshad" | ||
| + | |||
| + | # 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() | ||
| + | # 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 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ############################################################## | ||
| + | # 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 | ||
| + | |||
| + | # | ||
| + | # Doesn't perform any reflection itself -- merely texture maps | ||
| + | # a screen-size texture onto geometry. | ||
| + | # | ||
| + | |||
| + | # TODO: we should set a script variable or predicate | ||
| + | # 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 | ||
| + | |||
| + | |||
| + | # | ||
| + | # Used to clear the glow render target texture. | ||
| + | # by varying 'feedback', you control how much of | ||
| + | # 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 | ||
| + | |||
| + | # 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 | ||
Revision as of 09:06, 7 September 2007
EP5-SS 0xCD7FE87A 0x1C0532FA 0x59C623B0 0xFF886B27
- contentviewer
- Various material definitions for the ContentViewer.
- note: don't check this in -- seems to cause a crash if
- you don't have the debugger set up correctly
- enableShaderProgramDebugging -vertex
- anything extra needed by the contentviewer should be moved
- from config.matShad to common.matShad.
- include "config.matshad"
- 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()
- 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
- 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
- Doesn't perform any reflection itself -- merely texture maps
- a screen-size texture onto geometry.
- TODO: we should set a script variable or predicate
- 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
- Used to clear the glow render target texture.
- by varying 'feedback', you control how much of
- 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
- 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