Browse Source

HLSL updates for Light2D on Direct3D9

JoshEngebretson 10 years ago
parent
commit
ba7cfd31ea

+ 21 - 1
Data/AtomicPlayer/Resources/CoreData/Shaders/HLSL/Blur.hlsl

@@ -24,8 +24,10 @@ void VS(float4 iPos : POSITION,
 
 void PS(float2 iTexCoord : TEXCOORD0,
     float2 iScreenPos : TEXCOORD1,
-    out float4 oColor : COLOR0)
+    out float4 oColor : OUTCOLOR0)
 {
+
+#ifndef D3D11
     #ifdef BLUR3
         oColor = GaussianBlur(3, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
     #endif
@@ -41,4 +43,22 @@ void PS(float2 iTexCoord : TEXCOORD0,
     #ifdef BLUR9
         oColor = GaussianBlur(9, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
     #endif
+
+#else
+    #ifdef BLUR3
+        oColor = GaussianBlur(3, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
+    #endif
+
+    #ifdef BLUR5
+        oColor = GaussianBlur(5, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
+    #endif
+
+    #ifdef BLUR7
+        oColor = GaussianBlur(7, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffmap, sDiffMap, iTexCoord);
+    #endif
+
+    #ifdef BLUR9
+        oColor = GaussianBlur(9, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
+    #endif
+#endif
 }

+ 6 - 6
Data/AtomicPlayer/Resources/CoreData/Shaders/HLSL/Light2D.hlsl

@@ -3,10 +3,11 @@
 #include "Transform.hlsl"
 
 void VS(float4 iPos : POSITION,
-		float2 iTexCoord : TEXCOORD0,  
-		float4 iColor : COLOR0, 
-		out float4 oPos : POSITION, 
-		out float4 oColor : COLOR0)
+		float2 iTexCoord : TEXCOORD0,
+		float4 iColor : COLOR0,
+		out float4 oColor : COLOR0,
+		out float4 oPos : OUTPOSITION
+		)
 {
 
 	float4x3 modelMatrix = iModelMatrix;
@@ -15,8 +16,7 @@ void VS(float4 iPos : POSITION,
     oColor = iColor * iTexCoord.x;
 }
 
-void PS(float4 iColor : COLOR0, out float4 oColor : COLOR0)
+void PS(float4 iColor : COLOR0, out float4 oColor : OUTCOLOR0)
 {
 	oColor = iColor;
 }
-

+ 9 - 8
Data/AtomicPlayer/Resources/CoreData/Shaders/HLSL/Shadow2D.hlsl

@@ -8,7 +8,9 @@
 uniform float4 cShadowAmbient;
 #endif
 
-void VS(float4 iPos : POSITION, out float4 oPos : POSITION, out float2 oScreenPos : TEXCOORD0)
+void VS(float4 iPos : POSITION,
+       out float2 oScreenPos : TEXCOORD0,
+       out float4 oPos : OUTPOSITION)
 {
     float4x3 modelMatrix = iModelMatrix;
     float3 worldPos = GetWorldPos(modelMatrix);
@@ -16,13 +18,12 @@ void VS(float4 iPos : POSITION, out float4 oPos : POSITION, out float2 oScreenPo
     oScreenPos = GetScreenPosPreDiv(oPos);
 }
 
-void PS(float2 iScreenPos : TEXCOORD0, out float4 oColor : COLOR0)
+void PS(float2 iScreenPos : TEXCOORD0, out float4 oColor : OUTCOLOR0)
 {
-	float4 diffInput = tex2D(sDiffMap, iScreenPos);
-    float4 lightInput = tex2D(sEmissiveMap, iScreenPos);
-	oColor.rgb = (diffInput.rgb * (lightInput.rgb + cShadowAmbient.rgb) * (lightInput.a + cShadowAmbient.a));
-    oColor.a = 1.0;
-}
-
 
+    float4 diffInput = Sample2D(DiffMap, iScreenPos);
+    float4 lightInput = Sample2D(EmissiveMap, iScreenPos);
 
+	  oColor.rgb = (diffInput.rgb * (lightInput.rgb + cShadowAmbient.rgb) * (lightInput.a + cShadowAmbient.a));
+    oColor.a = 1.0;
+}