Hello Guys,
I’m getting this exception after adding DirectionalLightShadowFilter+SSAOFilter filters:
W/com.jme3.renderer.opengl.GLRenderer: WARNING Bad compile of:
1 #version 310 es
2 #define FRAGMENT_SHADER 1
3 #define HARDWARE_SHADOWS 1
4 #define FILTER_MODE 1
5 #define PCFEDGE 1.0
6 #define SHADOWMAP_SIZE 4096.0
7 #define FADE 1
8 #define PSSM 1
9 #define BACKFACE_SHADOWS 1
10 #extension GL_ARB_texture_multisample : enable
11 #extension GL_OES_gpu_shader5 : enable
12 #extension GL_ARB_gpu_shader5 : enable
13 precision highp float;
14 precision highp sampler2D;
15 precision highp sampler3D;
16 precision highp sampler2DShadow;
17 precision highp sampler2DArray;
18 precision highp sampler2DMS;
19 // -- begin import Common/ShaderLib/GLSLCompat.glsllib --
20 #if defined GL_ES
21 # define hfloat highp float
22 # define hvec2 highp vec2
23 # define hvec3 highp vec3
24 # define hvec4 highp vec4
25 # define lfloat lowp float
26 # define lvec2 lowp vec2
27 # define lvec3 lowp vec3
28 # define lvec4 lowp vec4
29 #else
30 # define hfloat float
31 # define hvec2 vec2
32 # define hvec3 vec3
33 # define hvec4 vec4
34 # define lfloat float
35 # define lvec2 vec2
36 # define lvec3 vec3
37 # define lvec4 vec4
38 #endif
39
40 #if __VERSION__ >= 130
41 # ifdef GL_ES
42 out highp vec4 outFragColor;
43 # else
44 out vec4 outFragColor;
45 #endif
46 # define texture1D texture
47 # define texture2D texture
48 # define texture3D texture
49 # define textureCube texture
50 # define texture2DLod textureLod
51 # define textureCubeLod textureLod
52 # define texture2DArray texture
53 # if defined VERTEX_SHADER
54 # define varying out
55 # define attribute in
56 # elif defined FRAGMENT_SHADER
57 # define varying in
58 # define gl_FragColor outFragColor
59 # endif
60 #else
61 # define isnan(val) !(val<0.0||val>0.0||val==0.0)
62 #endif
63
64 #if __VERSION__ == 110
65 mat3 mat3_sub(mat4 m) {
66 return mat3(m[0].xyz, m[1].xyz, m[2].xyz);
67 }
68 #else
69 #define mat3_sub mat3
70 #endif
71
72 #if __VERSION__ <= 140
73 float determinant(mat2 m) {
74 return m[0][0] * m[1][1] - m[1][0] * m[0][1];
75 }
76
77 float determinant(mat3 m) {
78 return + m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
79 - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
80 + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
81 }
82 #endif
83
84 #if __VERSION__ <= 130
85 mat2 inverse(mat2 m) {
86 return mat2(m[1][1], -m[0][1], -m[1][0], m[0][0]) / determinant(m);
87 }
88
89 mat3 inverse(mat3 m) {
90 return mat3(
91 + (m[1][1] * m[2][2] - m[2][1] * m[1][2]),
92 - (m[1][0] * m[2][2] - m[2][0] * m[1][2]),
93 + (m[1][0] * m[2][1] - m[2][0] * m[1][1]),
94 - (m[0][1] * m[2][2] - m[2][1] * m[0][2]),
95 + (m[0][0] * m[2][2] - m[2][0] * m[0][2]),
96 - (m[0][0] * m[2][1] - m[2][0] * m[0][1]),
97 + (m[0][1] * m[1][2] - m[1][1] * m[0][2]),
98 - (m[0][0] * m[1][2] - m[1][0] * m[0][2]),
99 + (m[0][0] * m[1][1] - m[1][0] * m[0][1])) / determinant(m);
100 }
101 #endif
102
103 // -- end import Common/ShaderLib/GLSLCompat.glsllib --
104 // -- begin import Common/ShaderLib/MultiSample.glsllib --
105
106 uniform int m_NumSamples;
107 uniform int m_NumSamplesDepth;
108
109 #ifdef RESOLVE_MS
110 #define COLORTEXTURE sampler2DMS
111 #else
112 #define COLORTEXTURE sampler2D
113 #endif
114
115 #ifdef RESOLVE_DEPTH_MS
116 #define DEPTHTEXTURE sampler2DMS
117 #else
118 #define DEPTHTEXTURE sampler2D
119 #endif
120
121 // NOTE: Only define multisample functions if multisample is available
122 #if defined(GL_ARB_texture_multisample) || (defined GL_ES && __VERSION__>=310)
123 vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){
124 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
125 vec4 color = vec4(0.0);
126 for (int i = 0; i < numSamples; i++){
127 color += texelFetch(tex, iTexC, i);
128 }
129 return color / float(numSamples);
130 }
131
132 vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sampleId){
133 ivec2 iTexC = ivec2(texC * vec2(textur
2021-05-18 21:28:25.631 16593-16716/com.abware.scenemax3dgamehub E/AndroidRuntime: FATAL EXCEPTION: GLThread 603
Process: com.abware.scenemax3dgamehub, PID: 16593
com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL310]
0(11) : error C7621: #extension directive must occur before any non-preprocessor token
0(12) : error C7621: #extension directive must occur before any non-preprocessor token
0(13) : error C7621: #extension directive must occur before any non-preprocessor token
at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1485)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1512)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1576)
at com.jme3.material.logic.DefaultTechniqueDefLogic.render(DefaultTechniqueDefLogic.java:94)
at com.jme3.material.Technique.render(Technique.java:166)
at com.jme3.material.Material.render(Material.java:1026)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:614)
at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:230)
at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:314)
at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:334)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1114)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1158)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:272)
at com.jme3.app.AndroidHarnessFragment.update(AndroidHarnessFragment.java:577)
at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.java:348)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1571)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
2021-05-18 21:28:25.635 16593-16716/com.abware.scenemax3dgamehub E/com.jme3.app.AndroidHarnessFragment: SEVERE Exception thrown in Thread[GLThread 603,5,main]
com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL310]
0(11) : error C7621: #extension directive must occur before any non-preprocessor token
0(12) : error C7621: #extension directive must occur before any non-preprocessor token
0(13) : error C7621: #extension directive must occur before any non-preprocessor token
at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1485)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1512)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1576)
at com.jme3.material.logic.DefaultTechniqueDefLogic.render(DefaultTechniqueDefLogic.java:94)
at com.jme3.material.Technique.render(Technique.java:166)
at com.jme3.material.Material.render(Material.java:1026)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:614)
at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:230)
at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:314)
at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:334)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1114)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1158)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:272)
at com.jme3.app.AndroidHarnessFragment.update(AndroidHarnessFragment.java:577)
at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.java:348)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1571)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
So the question is - is it a known issue and what is the best way in Android to render shadows?
Thanks!