OSDN Git Service

* Fixed syntax errors and crashes with shadow processor and filters
authorshadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Wed, 6 Jul 2011 01:40:42 +0000 (01:40 +0000)
committershadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Wed, 6 Jul 2011 01:40:42 +0000 (01:40 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7831 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/core-data/Common/MatDefs/Shadow/PostShadowPSSM15.frag
engine/src/core-data/Common/ShaderLib/MultiSample.glsllib
engine/src/core/com/jme3/post/FilterPostProcessor.java

index 18b4c81..393a2b1 100644 (file)
@@ -1,4 +1,5 @@
-#extension GL_ARB_texture_gather : enable\r
+// Because gpu_shader5 is actually where those\r
+// gather functions are declared to work on shadowmaps\r
 #extension GL_ARB_gpu_shader5 : enable\r
 \r
 #ifdef HARDWARE_SHADOWS\r
@@ -82,7 +83,7 @@ float Shadow_DoBilinear_2x2(in SHADOWMAP tex, in vec4 projCoord){
         return 1.0;\r
 \r
     ivec2 texSize = textureSize(tex, 0);\r
-    #ifdef GL_ARB_texture_gather\r
+    #ifdef GL_ARB_gpu_shader5\r
         vec4 coord = vec4(projCoord.xyz / projCoord.w,0.0);\r
         vec4 gather = SHADOWGATHER(tex, coord);\r
     #else\r
index f5936c0..e4d46b4 100644 (file)
@@ -1,4 +1,5 @@
 #extension GL_ARB_texture_multisample : enable\r
+\r
 uniform int m_NumSamples;\r
 uniform int m_NumSamplesDepth;\r
 \r
@@ -14,6 +15,8 @@ uniform int m_NumSamplesDepth;
     #define DEPTHTEXTURE sampler2D\r
 #endif\r
 \r
+// NOTE: Only define multisample functions if multisample is being used!\r
+#ifdef GL_ARB_texture_multisample\r
 vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){\r
       ivec2 iTexC = ivec2(texC * textureSize(tex));\r
       vec4 color = vec4(0.0);\r
@@ -23,36 +26,37 @@ vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){
       return color / numSamples;\r
 }\r
 \r
-vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sample){\r
-    return texture2D(tex,texC);\r
-}\r
-\r
 vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sample){\r
     ivec2 iTexC = ivec2(texC * textureSize(tex));\r
     return texelFetch(tex, iTexC, sample);\r
 }\r
 \r
-vec4 getColor(in sampler2D tex, in vec2 texC){\r
-    return texture2D(tex,texC);\r
-}\r
-\r
 vec4 getColor(in sampler2DMS tex, in vec2 texC){\r
       return textureFetch(tex, texC, m_NumSamples);\r
 }\r
 \r
-vec4 getColorSingle(in sampler2D tex, in vec2 texC){\r
-    return texture2D(tex, texC);\r
-}\r
-\r
 vec4 getColorSingle(in sampler2DMS tex, in vec2 texC){\r
     ivec2 iTexC = ivec2(texC * textureSize(tex));\r
     return texelFetch(tex, iTexC, 0);\r
 }\r
 \r
-vec4 getDepth(in sampler2D tex,in vec2 texC){\r
+vec4 getDepth(in sampler2DMS tex,in vec2 texC){\r
+      return textureFetch(tex,texC,m_NumSamplesDepth);\r
+}\r
+#endif\r
+\r
+vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sample){\r
     return texture2D(tex,texC);\r
 }\r
 \r
-vec4 getDepth(in sampler2DMS tex,in vec2 texC){\r
-      return textureFetch(tex,texC,m_NumSamplesDepth);\r
+vec4 getColor(in sampler2D tex, in vec2 texC){\r
+    return texture2D(tex,texC);\r
 }\r
+\r
+vec4 getColorSingle(in sampler2D tex, in vec2 texC){\r
+    return texture2D(tex, texC);\r
+}\r
+\r
+vec4 getDepth(in sampler2D tex,in vec2 texC){\r
+    return texture2D(tex,texC);\r
+}
\ No newline at end of file
index cc76803..3ee7a72 100644 (file)
@@ -40,7 +40,6 @@ import com.jme3.export.InputCapsule;
 import com.jme3.export.OutputCapsule;\r
 import com.jme3.export.Savable;\r
 import com.jme3.material.Material;\r
-import com.jme3.material.RenderState;\r
 import com.jme3.renderer.Camera;\r
 import com.jme3.renderer.Caps;\r
 import com.jme3.renderer.RenderManager;\r
@@ -140,7 +139,6 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
 \r
         Camera cam = vp.getCamera();\r
 \r
-\r
         //save view port diensions\r
         left = cam.getViewPortLeft();\r
         right = cam.getViewPortRight();\r
@@ -150,7 +148,6 @@ public class FilterPostProcessor implements SceneProcessor, Savable {
         originalHeight = cam.getHeight();\r
         //first call to reshape\r
         reshape(vp, cam.getWidth(), cam.getHeight());\r
-\r
     }\r
 \r
     /**\r