|
|
Line 1: |
Line 1: |
− | EP0-TS2
| + | EP6-BV |
| 0xCD7FE87A | | 0xCD7FE87A |
| 0x1C0532FA | | 0x1C0532FA |
Line 7: |
Line 7: |
| | | |
| # | | # |
− | # Various material definitions for the ContentViewer. | + | # Material configuration file for ContentViewer |
| # | | # |
| | | |
− | # note: don't check this in -- seems to cause a crash if
| + | version 2 |
− | # you don't have the debugger set up correctly
| + | |
− | #enableShaderProgramDebugging -vertex
| + | |
| | | |
− | # anything extra needed by the contentviewer should be moved
| + | ignoreErrors true |
− | # from config.matShad to common.matShad.
| + | |
− | #include "config.matshad"
| + | |
| | | |
− | # Lab extension stuff
| + | flushMaterials |
− |
| + | |
− | define ShowRenderTypeMaterial()
| + | |
− | material
| + | |
− | shader
| + | |
− | viewerRenderTypePred viewerRenderType
| + | |
| | | |
− | pass -fixedFunction
| + | #include "debugging_support.matShad" # uncomment for debug configuration settings |
− | 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)
| + | setb isContentViewer true |
− | vertexFormatPred position 0 true
| + | |
| | | |
− | shaderProgram -target vertexProgram -method assemble
| + | # Common definition files. Please put all materials |
− | bindConstants 0 -bindingID geomToCamera -constantCount 3
| + | # shared by the game and content viewer here. |
− | bindConstants 3 -bindingID cameraToClip -constantCount 4
| + | include "common.matShad" |
| | | |
− | shaderSource
| + | # Content-viewer specific |
− | vs_1_1
| + | include "contentViewer.matShad" |
− | dcl_position v0
| + | |
− | dcl_normal v1
| + | |
| | | |
− | def c7,$color,0
| + | bindMaterials |
− | 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
| + | |
− | | + | |
− | | + | |
− | | + | |
− | 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
| + | |