struct Plain_OUT { float4 vPos : POSITION; float4 color :COLOR0; }; Plain_OUT Plain_VS(float4 position : POSITION, float4 color : COLOR0, uniform float4x4 WorldViewProj) { Plain_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.color = color; return OUT; } struct PlainTex_OUT { float4 vPos : POSITION; float4 color :COLOR0; float4 texCoord: TEXCOORD0; }; PlainTex_OUT PlainTex_VS(float4 position : POSITION, float4 color : COLOR, float4 texCoord : TEXCOORD0, uniform float4x4 WorldViewProj) { PlainTex_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.color = color; OUT.texCoord = texCoord; return OUT; } struct Shaded_OUT { float4 vPos : POSITION; float4 wNormal : TEXCOORD0; float4 wPos : TEXCOORD1; }; Shaded_OUT Shaded_VS(float4 position : POSITION, float4 normal : NORMAL, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 WorldInv) { Shaded_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position); OUT.wNormal = mul(normal, WorldInv); return OUT; } struct ShadedTex_OUT { float4 vPos : POSITION; float4 texCoord : TEXCOORD0; float4 wNormal : TEXCOORD1; float4 wPos : TEXCOORD2; }; ShadedTex_OUT ShadedTex_VS(float4 position : POSITION, float4 normal : NORMAL, float4 texCoord : TEXCOORD0, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 WorldInv) { ShadedTex_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position); OUT.wNormal = mul(normal, WorldInv); OUT.texCoord = texCoord; return OUT; } struct ShadedBump_OUT { float4 vPos : POSITION; float4 wNormal : TEXCOORD1; float4 tangent : TEXCOORD2; float4 binormal: TEXCOORD3; float4 wPos : TEXCOORD4; }; ShadedBump_OUT ShadedBump_VS(float4 position : POSITION, float4 normal : NORMAL, float4 texCoord : TEXCOORD0, float4 tangent : TANGENT, float4 binormal : BINORMAL, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 WorldInv) { ShadedBump_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position); OUT.wNormal = mul(normal, WorldInv); OUT.binormal = binormal; OUT.tangent = tangent; return OUT; } struct ShadedBumpTex_OUT { float4 vPos : POSITION; float4 texCoord : TEXCOORD0; float4 wNormal : TEXCOORD1; float4 tangent : TEXCOORD2; float4 binormal : TEXCOORD3; float4 wPos : TEXCOORD4; }; ShadedBumpTex_OUT ShadedBumpTex_VS(float4 position : POSITION, float4 normal : NORMAL, float4 texCoord : TEXCOORD0, float4 tangent : TANGENT, float4 binormal : BINORMAL, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 WorldInv) { ShadedBumpTex_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position); OUT.wNormal = mul(normal, WorldInv); OUT.texCoord = texCoord; OUT.binormal = binormal; OUT.tangent = tangent; return OUT; } struct VPos_OUT { float4 VPos : POSITION; float4 VPosition : TEXCOORD0; }; VPos_OUT VPos(float4 position : POSITION, uniform float4x4 WorldViewProj) { VPos_OUT OUT; OUT.VPos = OUT.VPosition = mul(WorldViewProj, position); return OUT; } struct MPos_OUT { float4 VPos : POSITION; float4 MPos : TEXCOORD0; }; MPos_OUT MPos(float4 position : POSITION, uniform float4x4 WorldViewProj) { MPos_OUT OUT; OUT.VPos = mul(WorldViewProj, position); OUT.MPos = position; return OUT; } MPos_OUT MPos_NoTransform(float4 position : POSITION) { MPos_OUT OUT; OUT.VPos = position; OUT.MPos = position; return OUT; } struct CPos_OUT { float4 VPos : POSITION; float4 CPos : TEXCOORD0; }; CPos_OUT CPos(float4 position : POSITION, uniform float4x4 WorldViewProj, uniform float4x4 WorldView) { CPos_OUT OUT; OUT.VPos = mul(WorldViewProj, position); OUT.CPos = mul(WorldView, position); return OUT; } struct Shaded_CPos_OUT { float4 vPos : POSITION; float4 wNormal : TEXCOORD0; float4 wPos : TEXCOORD1; float4 CPos : TEXCOORD2; }; Shaded_CPos_OUT Shaded_CPos_VS(float4 position : POSITION, float4 normal : NORMAL, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 WorldView, uniform float4x4 WorldInv) { Shaded_CPos_OUT OUT; OUT.vPos = mul(WorldViewProj, position); OUT.wPos = mul(World, position); OUT.CPos = mul(WorldView, position); OUT.wNormal = mul(normal, WorldInv); return OUT; } struct LightVPos_OUT { float4 VPos : POSITION; float4 LightVPos : TEXCOORD0; }; LightVPos_OUT LightVPos(float4 position : POSITION, uniform float4x4 WorldViewProj, uniform float4x4 LightViewProj, uniform float4x4 World) { LightVPos_OUT OUT; OUT.VPos = mul(WorldViewProj, position); float4 WPos = mul(World, position); OUT.LightVPos = mul(LightViewProj, WPos); return OUT; } struct LightCPos_OUT { float4 VPos : POSITION; float4 LightVPos : TEXCOORD0; float4 LightCPos : TEXCOORD1; }; LightCPos_OUT LightCPos(float4 position : POSITION, uniform float4x4 WorldViewProj, uniform float4x4 World, uniform float4x4 LightViewProj, uniform float4x4 LightView) { LightCPos_OUT OUT; OUT.VPos = mul(WorldViewProj, position); float4 WPos = mul(World, position); OUT.LightVPos = mul(LightViewProj, WPos); OUT.LightCPos = mul(LightView, WPos); return OUT; }