Difference between revisions of "TEST-STRCMP4CODES"

From SimsWiki
Jump to: navigation, search
Line 1: Line 1:
 
  
  

Revision as of 10:55, 24 March 2008


  1. ==============================================================================

setf swvsWaterlineShift -0.50


define NeighborhoodTerrainPrepWorkSWVS()

  1. 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


  1. ==============================================================================
  2. 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


  1. 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


  1. ==============================================================================
  2. 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

  1. >

end

enddef

  1. ==============================================================================
  2. renders the terrain colors. The geometry is a patchwork 'quilt' of sorts, with overlapping edges
  3. 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



  1. ==============================================================================

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


  1. ==============================================================================
  2. The layer ID for this should be lower than "waterLayer" Id because we want the farther side of the water box should be
  3. drawn as well.
  4. 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

  1. ==============================================================================
  2. 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


  1. ==============================================================================
  2. 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


  1. ==============================================================================
  2. 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

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox