TEST-STRCMP4CODES
EP3-OFB 0xCD7FE87A 0x1C0532FA 0xB00AEAC0 0xFF7D973E
- rug
- Rugs
seti rugLayer -2 setb forceFF false setb hasShapeColor false
define RugMaterialFF()
material
shader -layer $rugLayer
if ($hasShapeColor)
pass -fixedFunction -modifiedEachFrameHint
else
pass -fixedFunction
endif
create LightingStates()
create AttenuatedMatCoef(1)
ffDepthOffset 2
alphaTest true 127
alphaTestFunction acceptIfGreater
depthTest true -enableDepthWrite false
colorScalar (0.8, 0.8, 0.8, 1)
if ($hasShapeColor)
tsEdithShapeColor $currentMaterialName
stage
texture $rugTexture
ffTextureCoordsSource 0
# add the lightmap lighting to any direct lights.
# the light map has been prescaled by 0.5 textureBlend multiply(texture colorScalar) select(texture)
end
else
stage
texture "floorLightMap_${page}"
ffTextureCoordsSource 1
# add the lightmap lighting to any direct lights.
# the light map has been prescaled by 0.5 textureBlend multiply(texture colorScalar) select(texture)
end
stage
texture $rugTexture
textureAddressing clamp clamp
ffTextureCoordsSource 0
textureBlend multiplyScale2(texture outRegister) select(texture)
end #end stage
endif
end #pass
end #end shader
end #end material
enddef
setv3 matdiffuse (0.8, 0.8, 0.8)
define RugMaterialGen()
material
create DetermineHardwareSupport()
#trace "$currentMaterialName : $forceFF"
if (not $hasShapeColor and ($useHWShader1Path or $useHWShader2Path))
create RugMaterialHW()
else
create RugMaterialFF()
# ultimate fallback pass? no light map, one stage.
shader -layer $rugLayer validateRenderShaderContext -vertexFormat position 0 required validateRenderShaderContext -vertexFormat normal 0 required validateRenderShaderContext -vertexFormat texcoord 0 required
pass -fixedFunction create LightingStates() create AttenuatedMatCoef(1)
ffDepthOffset 2
alphaTest true 127
alphaTestFunction acceptIfGreater
depthTest true -enableDepthWrite false
stage texture $rugTexture textureAddressing clamp clamp ffTextureCoordsSource 0 textureBlend multiplyScale2(texture diffuse) select(outRegister) end end end
endif end # material
enddef
define RugMaterialHW()
shader -layer $rugLayer
validateRenderShaderContext -vertexFormat position 0 required
validateRenderShaderContext -vertexFormat texcoord 0 required
pass
alphaTest true 127
alphaTestFunction acceptIfGreater
depthTest true -enableDepthWrite false depthTestFunction acceptIfLess
shaderProgram -target vertexProgram -method compile -version 1_1
bindConstants 0 -bindingID geomToCamera -constantCount 3
bindConstants 3 -bindingID cameraToClipWithDepthOffset -constantCount 4 -data(2, 2, 2, 2)
shaderSource
float4x3 geomToCameraMatrix : register(c0);
float4x4 cameraToClipWithDOMatrix : register(c3);
struct cVertexIn
{
float3 mPosition : POSITION0;
float2 mTC0 : TEXCOORD0;
float2 mTC1 : TEXCOORD1;
};
struct cVertexOut
{
float4 mClipPosition : POSITION;
float2 mTC0 : TEXCOORD0;
float2 mTC1 : TEXCOORD1;
};
cVertexOut VertexMain(cVertexIn vertexIn)
{
cVertexOut result;
float3 pos = mul(float4(vertexIn.mPosition, 1), geomToCameraMatrix);
result.mClipPosition = mul(float4(pos, 1), cameraToClipWithDOMatrix);
result.mTC0 = vertexIn.mTC0;
result.mTC1 = vertexIn.mTC1;
return result;
}
endShaderSource
end
shaderProgram -target pixelProgram -method assemble
bindConstants 0 -bindingID immediateData -data($matdiffuse, 1)
shaderSource
ps_1_1
def c2, 1,1,1,1
tex t0 ; base
tex t1 ; lightmap
mul r0, t0, t1 ; base floor * light map
mul_x2 r0.rgb, r0, c0 ; scale at the end to prevent precision/LDR errors
mov r0.a, t0.a
endShaderSource
end # end shader program
sampler 0
texture $rugTexture
textureAddressing clamp clamp
end
sampler 1
texture "floorLightMap_${page}" end
end end
enddef
materialDefinition RugMaterial
addParam rugTexture rug addParam page 0 addParam stdMatDiffCoef (0.8, 0.8, 0.8) addParam stdMatSpecPower 0 addParam stdMatEmissiveCoef 0,0,0 addParam stdMatSpecCoef 0,0,0 setDefinition RugMaterialGen
end
materialDefinition RugMaterialEdithColor
addParam rugTexture rug addParam page 0 addParam stdMatDiffCoef (0.8, 0.8, 0.8) addParam stdMatSpecPower 0 addParam stdMatEmissiveCoef 0,0,0 addParam stdMatSpecCoef 0,0,0 addParam hasShapeColor true setDefinition RugMaterialGen
end