Difference between revisions of "TEST-STRCMP4CODES"
Line 1: | Line 1: | ||
− | |||
Revision as of 15:55, 24 March 2008
- ==============================================================================
setf swvsWaterlineShift -0.50
define NeighborhoodTerrainPrepWorkSWVS()
- this material does nothing but prep the z-buffer, and render black.
pass
shaderProgram -target vertexProgram -method link
create BindsForSoftwareVSTransforms(false false) shaderFragment TransformPositionRigidNoLighting2_x shaderFragment NoLighting2_x end
colorScalar (0.0, 0.0, 0.0, 1.0)
stage textureBlend select(colorScalar) select(colorScalar) end end
enddef
- ==============================================================================
- Used for those triangles in the canvas which are partially under water.
define NeighborhoodWaterlineStraddleSWVS()
vertexFormatPred position 0 true vertexFormatPred normal 0 true vertexFormatPred texcoord 0 true viewerRenderTypePred $kRenderTypeReflection
pass shaderProgram -target vertexProgram -method link create BindsForSoftwareVSTransforms(false false) bindConstants 11 -bindingID immediateData -data (0,0, 1.0/$waterHeight , -0.25) -constantType float create TransformFragments(false false true false 0 0 false 2_x) shaderFragment TerrainWaterMaskTexGenUVZero2_x end
alphaBlend srcFactor(one) add dstFactor(srcAlpha) cullmode none # so that reflections don't "creep under" edge of terrain #colorScalar (0.0, 1.0, 0.1, 0.0)
#alphaTest true 128 #alphaTestFunction acceptIfGreater
depthTest true -enableDepthWrite true depthTestFunction accept
stage # above water -- clip by using depth-based 0/1 texture. texture blackWhite textureAddressing clamp clamp textureFilterHint point point textureMIPFilterHint disabled
textureBlend select(texture) select(texture) end
end
enddef
- used to render black on the straddle piece, so other passes can plop stuff on top.
define NeighborhoodWaterlineStraddleStandardCameraSWVS()
pass
shaderProgram -target vertexProgram -method link
create BindsForSoftwareVSTransforms(false false)
shaderFragment TransformPositionRigidNoLighting2_x
shaderFragment NoLighting2_x
end
#alphaBlend srcFactor(one) add dstFactor(zero)
cullmode none # so that reflections don't "creep under" edge of terrain colorScalar (0.0, 0.0, 0.0, 1.0)
stage textureBlend select(colorScalar) select(colorScalar) end
end
enddef
- ==============================================================================
- Material for terrain geometry that is partially or completely under water.
define NeighborhoodUnderWaterTerrainSWVS()
pass
shaderProgram -target vertexProgram -method assemble create BindsForSoftwareVSTransforms(false false)
setf normalizerScale (1.0/($waterHeight))
setv4 texgenData ($normalizerScale, 1, $waterHeight, -0.5)
bindConstants 11 -bindingID immediateData -data $texgenData
shaderSource vs_1_1
def c12,0, 0.5 ,1,2 dcl_position v0
m4x4 oPos, v0, c4 ; geom to clip
mad r0.xyz, v0.zzz, -c11.xxx, c11.yy ; normalize this from 0 to 1.
mov oT0.xy, r0
add oT1.xy, r0, -c11.ww ; shift by 0.5, so that the 'clip texture', ends up at the water level.
mov oD0, c12.y endShaderSource
end
alphaBlend srcFactor(zero) add dstFactor(srcColor)
cullmode none # so that reflections don't "creep under" edge of terrain
alphaTest true 128 alphaTestFunction acceptIfGreater
# apply depth-based gradient texture to terrain that is under water.
stage
texture $waterGradientTexture
textureAddressing clamp clamp
textureBlend multiply(diffuse texture) select(outRegister)
end
stage
texture blackWhite
textureAddressing clamp clamp
textureFilterHint point point
textureMIPFilterHint disabled
textureBlend select(outRegister) select(texture)
end
#< stage textureBlend select(diffuse) select(diffuse) end
- >
end
enddef
- ==============================================================================
- renders the terrain colors. The geometry is a patchwork 'quilt' of sorts, with overlapping edges
- this overlapping is handled by alpha blending
define NeighborhoodMainTerrainShaderSWVS()
pass
if (not $isImposter)
shaderProgram -target vertexProgram -method link
create BindsForSoftwareVSTransforms(false false)
setv4 texgenData (1.0/$nhoodPaintTextureScale, 1.0/$nhoodPaintTextureScale, $alphaMapScaleU, $alphaMapScaleV )
bindConstants 11 -bindingID immediateData -data $texgenData -constantType float # no morphs, skins or normals shaderFragment TransformPositionRigidNoLighting2_x shaderFragment TerrainPaintTexGen2_x end else shaderProgram -target vertexProgram -method assemble create BindsForSoftwareVSTransforms(false false)
setv4 texgenData (1.0/$nhoodPaintTextureScale, 1.0/$nhoodPaintTextureScale, $alphaMapScaleU, $alphaMapScaleV ) bindConstants 11 -bindingID immediateData -data $texgenData
shaderSource vs_1_1
def c12,0, 0.5 ,1,2 def c13, 0.0076923, 0.25, 0, 0 dcl_position v0 m4x4 oPos, v0, c4
mov oT0.xy, c13.yy mul oT1.xy, c11.xy, v0.xy endShaderSource
end endif
alphaBlend srcFactor(srcAlpha) add dstFactor(one) cullmode none # so that reflections don't "creep under" edge of terrain
#colorScalar $nhoodSunDirBiased
depthTest true -enableDepthWrite false depthTestFunction acceptIfEqual
colorScalar 1.0,1.0,1.0,1.0
stage texture $alphaMap textureAddressing clamp clamp textureBlend select(colorScalar) select(texture) end
stage texture $paintTexture textureAddressing tile tile textureBlend multiply(texture outRegister) select(outRegister) end end
enddef
- ==============================================================================
define NeighborhoodWaterSWVS() shader -layer (($waterLayer) * 18 + 17)
validateRenderShaderContext -viewerRenderType viewerRenderType
pass
fillmode $stdMatFillMode
alphaBlend srcFactor(one) add dstFactor(srcAlpha)
shaderProgram -target vertexProgram -method assemble create BindsForSoftwareVSTransforms(false false) shaderSource
vs_1_1
def c50, 0, 0.5,1,2 def c11, 0,0,1,0 def c12, 0.2,0.5,0.7, 0.1 dcl_position v0 dcl_normal v1 m4x3 r0.xyz, v0, c8 ; to camera space m3x3 r3.xyz, v1, c8
mov r0.w, c50.z m4x4 oPos, r0, c0 ; camera to clip
dp3 r1.w, r0, r0 rsq r1, r1.w mul r1, r1.w, r0 ; r1= view vector.
dp3 r2, r3, -r1 ; view dot normal max r2, r2, c50.x
add r3, c50.z, -r2
mul oD0.xyz, r3, c12 mov oD0.w, r2
endShaderSource end
stage
textureBlend select(diffuse) select(diffuse)
end
end
end
enddef
- ==============================================================================
- The layer ID for this should be lower than "waterLayer" Id because we want the farther side of the water box should be
- drawn as well.
- the layer ID of any under-water objects (so
define NeighborhoodWaterEdgeSWS()
pass
alphaBlend srcFactor(one) add dstFactor(zero) cullmode none # we want to render the father side of the water edge also
stage texture $waterEdgeTexture textureAddressing tile tile #ffTextureMatrix -scalev (1/$waterEdgeTextureScale, 1/$waterEdgeTextureScale) #ffTextureCoordsSource 0 textureBlend select(texture) select(diffuse) end end
enddef
- ==============================================================================
- a terrain edge is a 'slice' or 'cover plate' for the terrain when viewed edge-on, since the terrain is not infinite in all directions.
define NeighborhoodTerrainEdgeSWVS()
pass alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha)
stage texture $terrainEdgeTexture textureAddressing tile tile
#ffTextureMatrix -scalev (1/$terrainEdgeTextureScale, 1/$terrainEdgeTextureScale) #ffTextureCoordsSource 0
textureBlend multiply(texture diffuse) select(texture)
end
end
enddef
- ==============================================================================
- the last pass that applies the terrain lightmap across the neighborhood, but not underwater
define NeighborhoodTerrainLightingSWVS()
pass shaderProgram -target vertexProgram -method assemble create BindsForSoftwareVSTransforms(false false)
setf textureScale (1.0/($waterHeight)) setv4 texgenData ($textureScale, 1, $waterHeight, -0.5) bindConstants 11 -bindingID immediateData -data $texgenData
shaderSource vs_1_1
def c12,0, 0.5 ,1,2 def c13, 0.0078125, 0.00078125, 0, 0 dcl_position v0
endShaderSource if (not $isImposter)
shaderSource "dcl_texcoord v1"
endif
shaderSource
m4x4 oPos, v0, c4
mad r0.xyz, v0.zzz, -c11.xxx, c11.yy ; normalize this from 0 to 1.
add oT0.xy, r0, -c11.ww ; shift by 0.5, so that the 'clip texture', ends up at the water level.
endShaderSource
if ($isImposter) shaderSource mul oT1.xy, v0.xy, c13.yy endShaderSource else shaderSource "mul oT1.xy, v1, c13.xx" endif
end
# setup for SRC * DEST, standard lightmap.
alphaBlend srcFactor(destColor) add dstFactor(zero)
alphaTest true 128 alphaTestFunction acceptIfGreater
fillmode $stdMatFillMode
# not really important to do this?
depthTest true -enableDepthWrite false
depthTestFunction acceptIfEqual
colorScalar (1,1,1,1)
stage # if below water -- get black from this texture. texture blackWhite textureAddressing clamp clamp textureFilterHint point point textureMIPFilterHint disabled textureBlend select(texture:alphaReplicate) select(texture:invert)
end
stage texture "nhoodLightMap" textureBlend multiply(texture outRegister:alphaReplicate) select(outRegister) end
end
enddef
- ==============================================================================
- for rendering Lots, and when the lot creation tool is being used, this material renders the glowing-gridded rectangles
define NeighborhoodTerrainHighlightSWVS()
pass
shaderProgram -target vertexProgram -method link create BindsForSoftwareVSTransforms(false false) #setv4 texgenData (1, 1, 0.0, 0.0)
#bindConstants 11 -bindingID immediateData -data $texgenData
shaderFragment TransformPositionRigidNoLighting2_x shaderFragment NoTextureMagic2_x
end
alphaBlend srcFactor(srcAlpha) add dstFactor(invSrcAlpha) fillmode $stdMatFillMode colorScalar (1, 1, 1, $highlightAlpha)
stage texture $highlightTexture textureAddressing tile tile
textureBlend select(texture) multiply(texture colorScalar) end end
enddef