diff options
author | 2016-03-12 16:03:28 +0100 | |
---|---|---|
committer | 2016-03-12 16:03:28 +0100 | |
commit | 7add54760210313651c8a53a9ff6676512ce3fc8 (patch) | |
tree | e4e58b88feac19928cbb40479c9b799caead065c /hlsl | |
parent | a026a582f1a0ea8c1ede3acaddacef506ef3f3b0 (diff) |
Refactoring of render targes and vector texture coordinates
- implemented proper texture coordinates for vector quad primitive
- vector screen is now processed in texture coordinates
- revered workaround for raster screen, which is again processed in
texture coordinates
- known issue: cocktail mode for vector screen looks wrong
Diffstat (limited to 'hlsl')
-rw-r--r-- | hlsl/bloom.fx | 2 | ||||
-rw-r--r-- | hlsl/deconverge.fx | 35 | ||||
-rw-r--r-- | hlsl/distortion.fx | 97 | ||||
-rw-r--r-- | hlsl/downsample.fx | 7 | ||||
-rw-r--r-- | hlsl/focus.fx | 14 | ||||
-rw-r--r-- | hlsl/phosphor.fx | 2 | ||||
-rw-r--r-- | hlsl/post.fx | 99 | ||||
-rw-r--r-- | hlsl/prescale.fx | 2 | ||||
-rw-r--r-- | hlsl/primary.fx | 8 | ||||
-rw-r--r-- | hlsl/vector.fx | 12 |
10 files changed, 133 insertions, 145 deletions
diff --git a/hlsl/bloom.fx b/hlsl/bloom.fx index 47cc04c47ed..a338ff6211e 100644 --- a/hlsl/bloom.fx +++ b/hlsl/bloom.fx @@ -226,7 +226,7 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Color = Input.Color; - float2 TexCoord = Input.Position.xy / ScreenDims; + float2 TexCoord = Input.TexCoord; TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.TexCoord0 = TexCoord.xy; // + (0.5f / Level0Size); diff --git a/hlsl/deconverge.fx b/hlsl/deconverge.fx index df5bc2e6b49..f1cfa8fb686 100644 --- a/hlsl/deconverge.fx +++ b/hlsl/deconverge.fx @@ -52,12 +52,7 @@ struct PS_INPUT //----------------------------------------------------------------------------- uniform float2 ScreenDims; -uniform float2 SourceDims; -uniform float2 SourceRect; uniform float2 TargetDims; -uniform float2 QuadDims; - -uniform bool SwapXY = false; uniform float3 ConvergeX = float3(0.0f, 0.0f, 0.0f); uniform float3 ConvergeY = float3(0.0f, 0.0f, 0.0f); @@ -72,41 +67,35 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy /= ScreenDims; Output.Position.y = 1.0f - Output.Position.y; // flip y Output.Position.xy -= 0.5f; // center - Output.Position.xy *= 2.0f; // toom + Output.Position.xy *= 2.0f; // zoom - float2 TexCoord = Input.Position.xy / ScreenDims; + float2 TexCoord = Input.TexCoord; TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) - // we have to handle the swap of the coordinates ourself, because we are using screen not texture coordinates - float3 convergeX = SwapXY ? ConvergeY : ConvergeX; - float3 convergeY = SwapXY ? ConvergeX : ConvergeY; - float3 radialConvergeX = SwapXY ? RadialConvergeY : RadialConvergeX; - float3 radialConvergeY = SwapXY ? RadialConvergeX : RadialConvergeY; - // imaginary texel dimensions independed from screen dimension, but ratio - float2 TexelDims = (1.0f / 1024) * (QuadDims / ScreenDims); + float2 TexelDims = (1.0f / 1024); Output.TexCoordX = TexCoord.xxx; Output.TexCoordY = TexCoord.yyy; // center coordinates - Output.TexCoordX -= 0.5f * SourceRect.xxx; - Output.TexCoordY -= 0.5f * SourceRect.yyy; + Output.TexCoordX -= 0.5f; + Output.TexCoordY -= 0.5f; // radial converge offset to "translate" the most outer pixel as thay would be translated by the linar converge with the same amount - float2 radialConvergeOffset = 2.0f / SourceRect; + float2 radialConvergeOffset = 2.0f; // radial converge - Output.TexCoordX *= 1.0f + radialConvergeX * TexelDims.xxx * radialConvergeOffset.xxx; - Output.TexCoordY *= 1.0f + radialConvergeY * TexelDims.yyy * radialConvergeOffset.yyy; + Output.TexCoordX *= 1.0f + RadialConvergeX * TexelDims.xxx * radialConvergeOffset.xxx; + Output.TexCoordY *= 1.0f + RadialConvergeY * TexelDims.yyy * radialConvergeOffset.yyy; // un-center coordinates - Output.TexCoordX += 0.5f * SourceRect.xxx; - Output.TexCoordY += 0.5f * SourceRect.yyy; + Output.TexCoordX += 0.5f; + Output.TexCoordY += 0.5f; // linear converge - Output.TexCoordX += convergeX * TexelDims.xxx; - Output.TexCoordY += convergeY * TexelDims.yyy; + Output.TexCoordX += ConvergeX * TexelDims.xxx; + Output.TexCoordY += ConvergeY * TexelDims.yyy; Output.Color = Input.Color; diff --git a/hlsl/distortion.fx b/hlsl/distortion.fx index 6fd27a99795..0040c76d3b0 100644 --- a/hlsl/distortion.fx +++ b/hlsl/distortion.fx @@ -89,6 +89,8 @@ uniform float2 ScreenDims; // size of the window or fullscreen uniform float2 TargetDims; // size of the target surface uniform float2 QuadDims; // size of the screen quad +uniform bool VectorScreen; + VS_OUTPUT vs_main(VS_INPUT Input) { VS_OUTPUT Output = (VS_OUTPUT)0; @@ -101,7 +103,7 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Color = Input.Color; - Output.TexCoord = Input.Position.xy / ScreenDims; + Output.TexCoord = Input.TexCoord; Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) return Output; @@ -117,28 +119,9 @@ uniform float SmoothBorderAmount = 0.0f; uniform float VignettingAmount = 0.0f; uniform float ReflectionAmount = 0.0f; +uniform bool SwapXY = false; uniform int RotationType = 0; // 0 = 0°, 1 = 90°, 2 = 180°, 3 = 270° -float2 GetScreenQuadRatio() -{ - float ScreenRatio = ScreenDims.x / ScreenDims.y; - float QuadRatio = QuadDims.x / QuadDims.y; - float ScreenQuadRatio = QuadRatio / ScreenRatio; - - return ScreenQuadRatio > 1.0f - ? float2(1.0, 1.0f / ScreenQuadRatio) - : float2(ScreenQuadRatio, 1.0); -} - -float2 GetQuadRatio() -{ - float QuadRatio = QuadDims.x / QuadDims.y; - - return QuadRatio > 1.0f - ? float2 (1.0f, 1.0f / QuadRatio) - : float2 (QuadRatio, 1.0f); -} - float GetNoiseFactor(float3 n, float random) { // smaller n become more noisy @@ -147,7 +130,7 @@ float GetNoiseFactor(float3 n, float random) float GetVignetteFactor(float2 coord, float amount) { - float2 VignetteCoord = coord / (QuadDims / ScreenDims); + float2 VignetteCoord = coord; float VignetteLength = length(VignetteCoord); float VignetteBlur = (amount * 0.75f) + 0.25; @@ -161,21 +144,42 @@ float GetVignetteFactor(float2 coord, float amount) float GetSpotAddend(float2 coord, float amount) { - float2 QuadRatio = GetQuadRatio(); - - // upper right quadrant - float2 spotOffset = - RotationType == 1 // 90° - ? float2(-0.25f, -0.25f) - : RotationType == 2 // 180° - ? float2(0.25f, -0.25f) - : RotationType == 3 // 270° - ? float2(0.25f, 0.25f) - : float2(-0.25f, 0.25f); - - float2 SpotCoord = coord / (QuadDims / ScreenDims); - SpotCoord += spotOffset * QuadRatio; - SpotCoord *= QuadRatio; + float2 SpotCoord = coord; + + // hack for vector screen + if (VectorScreen) + { + // upper right quadrant + float2 spotOffset = + RotationType == 1 // 90° + ? float2(-0.25f, -0.25f) + : RotationType == 2 // 180° + ? float2(0.25f, -0.25f) + : RotationType == 3 // 270° else 0° + ? float2(0.25f, 0.25f) + : float2(-0.25f, 0.25f); + + // normalized screen canvas ratio + float2 CanvasRatio = SwapXY + ? float2(QuadDims.x / QuadDims.y, 1.0f) + : float2(1.0f, QuadDims.y / QuadDims.x); + + SpotCoord += spotOffset; + SpotCoord *= CanvasRatio; + } + else + { + // upper right quadrant + float2 spotOffset = float2(-0.25f, 0.25f); + + // normalized screen canvas ratio + float2 CanvasRatio = SwapXY + ? float2(1.0f, QuadDims.x / QuadDims.y) + : float2(1.0f, QuadDims.y / QuadDims.x); + + SpotCoord += spotOffset; + SpotCoord *= CanvasRatio; + } float SpotBlur = amount; @@ -193,17 +197,20 @@ float GetSpotAddend(float2 coord, float amount) float GetRoundCornerFactor(float2 coord, float radiusAmount, float smoothAmount) { - float2 ScreenQuadRatio = GetScreenQuadRatio(); - // reduce smooth amount down to radius amount smoothAmount = min(smoothAmount, radiusAmount); - float range = min(QuadDims.x, QuadDims.y) * 0.5; + float2 quadDims = QuadDims; + quadDims = !VectorScreen && SwapXY + ? quadDims.yx + : quadDims.xy; + + float range = min(quadDims.x, quadDims.y) * 0.5; float radius = range * max(radiusAmount, 0.0025f); float smooth = 1.0 / (range * max(smoothAmount, 0.0025f)); // compute box - float box = roundBox(ScreenDims * (coord * 2.0f), ScreenDims * ScreenQuadRatio, radius); + float box = roundBox(quadDims * (coord * 2.0f), quadDims, radius); // apply smooth box *= smooth; @@ -240,20 +247,12 @@ float2 GetDistortedCoords(float2 centerCoord, float amount) float2 GetCoords(float2 coord, float distortionAmount) { - float2 ScreenQuadRatio = GetScreenQuadRatio(); - // center coordinates coord -= 0.5f; - // apply ratio difference between screen and quad - coord /= ScreenQuadRatio; - // distort coordinates coord = GetDistortedCoords(coord, distortionAmount); - // revert ratio difference between screen and quad - coord *= ScreenQuadRatio; - // un-center coordinates coord += 0.5f; diff --git a/hlsl/downsample.fx b/hlsl/downsample.fx index fad2ef8341f..e89407208be 100644 --- a/hlsl/downsample.fx +++ b/hlsl/downsample.fx @@ -53,8 +53,6 @@ struct PS_INPUT uniform float2 ScreenDims; uniform float2 TargetDims; -uniform float2 SourceDims; -uniform float2 SourceRect; uniform float2 QuadDims; uniform int BloomLevel; @@ -71,6 +69,9 @@ VS_OUTPUT vs_main(VS_INPUT Input) VS_OUTPUT Output = (VS_OUTPUT)0; float2 HalfTargetTexelDims = 0.5f / TargetDims; + HalfTargetTexelDims *= VectorScreen + ? (ScreenDims / QuadDims) + : 1.0f; Output.Position = float4(Input.Position.xyz, 1.0f); Output.Position.xy /= ScreenDims; @@ -80,7 +81,7 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Color = Input.Color; - float2 TexCoord = Input.Position.xy / ScreenDims; + float2 TexCoord = Input.TexCoord; TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.TexCoord01.xy = TexCoord + Coord0Offset * HalfTargetTexelDims; diff --git a/hlsl/focus.fx b/hlsl/focus.fx index 1e2e668911b..138ad0eea6d 100644 --- a/hlsl/focus.fx +++ b/hlsl/focus.fx @@ -51,7 +51,6 @@ struct PS_INPUT uniform float2 ScreenDims; uniform float2 TargetDims; -uniform float2 QuadDims; VS_OUTPUT vs_main(VS_INPUT Input) { @@ -63,11 +62,11 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy -= 0.5f; // center Output.Position.xy *= 2.0f; // zoom - float2 TexCoord = Input.Position.xy / ScreenDims; + float2 TexCoord = Input.TexCoord; TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.TexCoord = TexCoord; - + Output.Color = Input.Color; return Output; @@ -79,8 +78,6 @@ VS_OUTPUT vs_main(VS_INPUT Input) uniform float2 Defocus = float2(0.0f, 0.0f); -uniform bool SwapXY = false; - static const float2 Coord1Offset = float2( 0.75f, 0.50f); static const float2 Coord2Offset = float2( 0.25f, 1.00f); static const float2 Coord3Offset = float2(-0.50f, 0.75f); @@ -92,13 +89,10 @@ static const float2 Coord8Offset = float2( 1.00f, -0.25f); float4 ps_main(PS_INPUT Input) : COLOR { - // we have to handle the swap of the coordinates ourself, because we are using screen not texture coordinates - float2 defocus = SwapXY ? Defocus.yx : Defocus.xy; - // imaginary texel dimensions independed from screen dimension, but ratio - float2 TexelDims = (1.0f / 1024) * (QuadDims / ScreenDims); + float2 TexelDims = (1.0f / 1024); - float2 DefocusTexelDims = defocus * TexelDims; + float2 DefocusTexelDims = Defocus * TexelDims; float4 d = tex2D(DiffuseSampler, Input.TexCoord); float3 d1 = tex2D(DiffuseSampler, Input.TexCoord + Coord1Offset * DefocusTexelDims).rgb; diff --git a/hlsl/phosphor.fx b/hlsl/phosphor.fx index 97defea0205..7d665b44749 100644 --- a/hlsl/phosphor.fx +++ b/hlsl/phosphor.fx @@ -79,7 +79,7 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy -= 0.5f; // center Output.Position.xy *= 2.0f; // zoom - Output.TexCoord = Input.Position.xy / ScreenDims; + Output.TexCoord = Input.TexCoord; Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.PrevCoord = Output.TexCoord; diff --git a/hlsl/post.fx b/hlsl/post.fx index 01d83d435ff..ce8ccd0c813 100644 --- a/hlsl/post.fx +++ b/hlsl/post.fx @@ -73,10 +73,10 @@ static const float PHI = 1.618034f; // Scanline & Shadowmask Vertex Shader //----------------------------------------------------------------------------- -uniform float2 ScreenDims; // size of the window or fullscreen -uniform float2 SourceDims; // size of the texture in power-of-two size -uniform float2 SourceRect; // size of the uv rectangle -uniform float2 TargetDims; // size of the target surface +uniform float2 ScreenDims; +uniform float2 SourceDims; +uniform float2 TargetDims; +uniform float2 QuadDims; uniform float2 ShadowDims = float2(32.0f, 32.0f); // size of the shadow texture (extended to power-of-two size) uniform float2 ShadowUVOffset = float2(0.0f, 0.0f); @@ -96,16 +96,16 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy -= 0.5f; // center Output.Position.xy *= 2.0f; // zoom - Output.TexCoord = Input.Position.xy / ScreenDims; - + Output.TexCoord = Input.TexCoord; Output.TexCoord += PrepareBloom ? 0.0f / TargetDims // use half texel offset (DX9) to do the blur for first bloom layer : 0.5f / TargetDims; // fix half texel offset correction (DX9) - Output.SourceCoord = Input.TexCoord; - Output.ScreenCoord = Input.Position.xy / ScreenDims; + Output.SourceCoord = Input.TexCoord; + Output.SourceCoord += 0.5f / TargetDims; + Output.Color = Input.Color; return Output; @@ -157,20 +157,55 @@ float2 GetAdjustedCoords(float2 coord, float2 centerOffset) return coord; } -float4 ps_main(PS_INPUT Input) : COLOR +// vector screen has the same quad texture coordinates for every screen orientation, raster screen differs +float2 GetShadowCoord(float2 QuadCoord, float2 SourceCoord) { - float2 ScreenTexelDims = 1.0f / ScreenDims; - float2 SourceTexelDims = 1.0f / SourceDims; + float2 QuadTexel = 1.0f / QuadDims; + float2 SourceTexel = 1.0f / SourceDims; + + float2 canvasCoord = ShadowTileMode == 0 + ? QuadCoord + ShadowUVOffset / QuadDims + : SourceCoord + ShadowUVOffset / SourceDims; + float2 canvasTexelDims = ShadowTileMode == 0 + ? QuadTexel + : SourceTexel; + + float2 shadowDims = ShadowDims; + float2 shadowUV = ShadowUV; + float2 shadowCount = ShadowCount; + + canvasCoord = !VectorScreen && SwapXY + ? canvasCoord.yx + : canvasCoord.xy; + shadowCount = !VectorScreen && SwapXY + ? shadowCount.yx + : shadowCount.xy; + + float2 shadowTile = canvasTexelDims * shadowCount; + + float2 shadowFrac = frac(canvasCoord / shadowTile); + shadowFrac = !VectorScreen && SwapXY + ? shadowFrac.yx + : shadowFrac.xy; + + float2 shadowCoord = (shadowFrac * shadowUV); + shadowCoord += 0.5f / shadowDims; // half texel offset + + return shadowCoord; +} + +float4 ps_main(PS_INPUT Input) : COLOR +{ float2 ScreenCoord = Input.ScreenCoord; float2 TexCoord = GetAdjustedCoords(Input.TexCoord, 0.5f); - float2 SourceCoord = GetAdjustedCoords(Input.SourceCoord, 0.5f * SourceRect); + float2 SourceCoord = GetAdjustedCoords(Input.SourceCoord, 0.5f); // Color float4 BaseColor = tex2D(DiffuseSampler, TexCoord); BaseColor.a = 1.0f; - // keep border + // keep border if (!PrepareBloom) { // clip border @@ -180,41 +215,7 @@ float4 ps_main(PS_INPUT Input) : COLOR // Mask Simulation (may not affect bloom) if (!PrepareBloom && ShadowAlpha > 0.0f) { - float2 shadowUVOffset = ShadowUVOffset; - shadowUVOffset = SwapXY - ? ShadowUVOffset.yx - : ShadowUVOffset.xy; - - float2 shadowDims = ShadowDims; - shadowDims = SwapXY - ? shadowDims.yx - : shadowDims.xy; - - float2 shadowUV = ShadowUV; - - float2 screenCoord = ShadowTileMode == 0 - ? ScreenCoord + shadowUVOffset / ScreenDims - : SourceCoord + shadowUVOffset / SourceDims; - screenCoord = SwapXY - ? screenCoord.yx - : screenCoord.xy; - - float2 shadowCount = ShadowCount; - shadowCount = SwapXY - ? shadowCount.yx - : shadowCount.xy; - - float2 shadowTile = ShadowTileMode == 0 - ? ScreenTexelDims * shadowCount - : SourceTexelDims * shadowCount; - shadowTile = SwapXY - ? shadowTile.yx - : shadowTile.xy; - - float2 ShadowFrac = frac(screenCoord / shadowTile); - - float2 ShadowCoord = (ShadowFrac * shadowUV); - ShadowCoord += 0.5f / shadowDims; // half texel offset + float2 ShadowCoord = GetShadowCoord(ScreenCoord, SourceCoord); float4 ShadowColor = tex2D(ShadowSampler, ShadowCoord); float3 ShadowMaskColor = lerp(1.0f, ShadowColor.rgb, ShadowAlpha); @@ -263,7 +264,7 @@ float4 ps_main(PS_INPUT Input) : COLOR if (!VectorScreen && HumBarAlpha > 0.0f) { float HumBarStep = frac(TimeMilliseconds * HumBarDesync); - float HumBarBrightness = 1.0 - frac(SourceCoord.y / SourceRect.y + HumBarStep) * HumBarAlpha; + float HumBarBrightness = 1.0 - frac(SourceCoord.y + HumBarStep) * HumBarAlpha; BaseColor.rgb *= HumBarBrightness; } } diff --git a/hlsl/prescale.fx b/hlsl/prescale.fx index 419254acd07..2b48a2f9e5a 100644 --- a/hlsl/prescale.fx +++ b/hlsl/prescale.fx @@ -67,7 +67,7 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy *= 2.0f; // zoom Output.TexCoord = Input.TexCoord; - // Output.TexCoord += 0.5f / targetDims; // half texel offset correction (DX9) + Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) return Output; } diff --git a/hlsl/primary.fx b/hlsl/primary.fx index 2086132a0e7..9f5a3c62faf 100644 --- a/hlsl/primary.fx +++ b/hlsl/primary.fx @@ -67,8 +67,8 @@ VS_OUTPUT vs_screen_main(VS_INPUT Input) Output.Position.xy -= 0.5f; // center Output.Position.xy *= 2.0f; // zoom - Output.TexCoord = Input.Position.xy / ScreenDims; - Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) + Output.TexCoord = Input.TexCoord; + // Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.Color = Input.Color; @@ -85,7 +85,7 @@ VS_OUTPUT vs_vector_buffer_main(VS_INPUT Input) Output.Position.xy -= 0.5f; // center Output.Position.xy *= 2.0f; // zoom - Output.TexCoord = Input.Position.xy / ScreenDims; + Output.TexCoord = Input.TexCoord; Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.Color = Input.Color; @@ -104,6 +104,7 @@ VS_OUTPUT vs_ui_main(VS_INPUT Input) Output.Position.xy *= 2.0f; // zoom Output.TexCoord = Input.TexCoord; + // Output.TexCoord += 0.5f / TargetDims; // half texel offset correction (DX9) Output.Color = Input.Color; @@ -124,7 +125,6 @@ float4 ps_screen_main(PS_INPUT Input) : COLOR float4 ps_vector_buffer_main(PS_INPUT Input) : COLOR { float4 BaseTexel = tex2D(DiffuseSampler, Input.TexCoord); - BaseTexel *= Input.Color + float4(1.0f, 1.0f, 1.0f, 0.0f); return BaseTexel; } diff --git a/hlsl/vector.fx b/hlsl/vector.fx index 1e94042ad5e..13aeb943c53 100644 --- a/hlsl/vector.fx +++ b/hlsl/vector.fx @@ -36,6 +36,8 @@ struct PS_INPUT //----------------------------------------------------------------------------- uniform float2 ScreenDims; +uniform float2 QuadDims; + uniform float2 TimeParams; uniform float3 LengthParams; @@ -47,9 +49,9 @@ VS_OUTPUT vs_main(VS_INPUT Input) Output.Position.xy /= ScreenDims; Output.Position.y = 1.0f - Output.Position.y; // flip y Output.Position.xy -= 0.5f; // center - Output.Position.xy *= 2.0f; // zoom + Output.Position.xy *= 2.0f * (ScreenDims / QuadDims); // zoom - Output.TexCoord = Input.Position.xy / ScreenDims; + Output.TexCoord = Input.TexCoord; Output.Color = Input.Color; @@ -75,7 +77,9 @@ float4 ps_main(PS_INPUT Input) : COLOR lengthModulate = lerp(lengthModulate, 4.0f, minLength * 0.5f); lengthModulate = lerp(1.0f, timeModulate * lengthModulate, LengthParams.y); - float4 outColor = Input.Color * float4(lengthModulate, lengthModulate, lengthModulate, 1.0f); + float4 outColor = float4(lengthModulate, lengthModulate, lengthModulate, 1.0f); + outColor *= Input.Color; + return outColor; } @@ -90,6 +94,6 @@ technique DefaultTechnique Lighting = FALSE; VertexShader = compile vs_2_0 vs_main(); - PixelShader = compile ps_2_0 ps_main(); + PixelShader = compile ps_2_0 ps_main(); } } |