ShaderShadow
From SimsWiki
EP5-SS
0xCD7FE87A
0x1C0532FA
0xD2989BDE
0xFF03CFFC
# shadow
#
# Various shaders for rendering shadows
#
# want to draw the shadow proper after standard opaque stuff.
seti simShadowLayer 1
# Enable to see the shadow more clearly.
setb simShadowDebug false
# --- Sim Shadow shader for the main render --------------------------------------------------------
define ShadowShader()
material
shader -layer ($simShadowLayer * 8)
vertexFormatPred position 0 true
vertexFormatPred texcoord 0 true
pass -fixedFunction
create LightingStatesNoStdLights()
ffMatCoef -amb $stdMatDiffCoef -diff $stdMatDiffCoef -emit $stdMatEmissiveCoef -spec $stdMatSpecCoef -specPow $stdMatSpecPower
addSpecular false
if ($simShadowDebug)
alphaBlend srcFactor(one) add dstFactor(zero)
else
alphaBlend srcFactor(destColor) add dstFactor(zero)
endif
depthTest true -enableDepthWrite false
fillmode $stdMatFillMode
stage
texture $stdMatBaseTextureName
textureAddressing clamp clamp clamp
textureMIPFilterHint disabled
ffTextureCoordsSource 0
textureBlend select(texture) select(texture)
end
end
end
end
enddef
# First pass at material for projective shadow texturing
setc shadowColor (0.5, 0.5, 0.7)
setf shadowStrength 0.8
define ProjectiveShadowDef()
material
shader -layer 0
vertexFormatPred position 0 true
pass -fixedFunction
create LightingStatesNoStdLights()
addSpecular false
alphaBlend srcFactor(one) add dstFactor(invSrcAlpha)
fillmode $stdMatFillMode
colorScalar $shadowColor $shadowStrength
tsUserLight projectiveTextureLight 0
stage
texture reggrid2
textureAddressing clamp clamp
textureMIPFilterHint disabled
textureBlend multiply(colorScalar texture:alphaReplicate) multiply(colorScalar texture)
end
# apply mask to prevent repeat off to infinity.
stage
texture overlayMask
textureFilterHint point point
textureAddressing clamp clamp
textureBlend select(outRegister) multiply(texture outRegister)
end
end
end
# do nothing fallback shader, in case the device does not support projective textures (Pixomatic)
shader
end
end
enddef
materialDefinition ProjectiveShadow
setDefinition ProjectiveShadowDef
end
# Called by code to create this material, to avoid referencing
# tsUserLight if not necessary.
define FamilyThumbnailShadowMaterial()
materialDefinition FamilyThumbnailShadow
setDefinition ProjectiveShadowDef
addParam shadowColor (0, 0, 0)
addParam shadowStrength 0.50
# read by code:
addParam lightDirection (0.2, 1, 2)
end
enddef