Hi, everybody!
I use the fog filter processor on Android as in
fpp = new FilterPostProcessor(assetManager);
fog = new FogFilter();
fpp.addFilter(fog);
This works on some other Android devices I have without any glitch. On the Samsung Galaxy S7, however, I get the following Exception:
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: SEVERE Exception thrown in Thread[GLThread 512,5,main]
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: com.jme3.renderer.RendererException: compile error in:ShaderSource[name=Common/MatDefs/Post/Fog.frag, defines, type=Fragment, language=GLSL100] error:0:10: S0012: Global variable initializer must be a constant expression
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.android.OGLESShaderRenderer.updateShaderSourceData(OGLESShaderRenderer.java:887)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.android.OGLESShaderRenderer.updateShaderData(OGLESShaderRenderer.java:912)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.android.OGLESShaderRenderer.setShader(OGLESShaderRenderer.java:970)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.material.Material.render(Material.java:1116)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:523)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:202)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:281)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:294)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:987)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.renderer.RenderManager.render(RenderManager.java:1029)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.app.SimpleApplication.update(SimpleApplication.java:252)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.app.AndroidHarness.update(AndroidHarness.java:467)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.java:349)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1649)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness: at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1354)
05-18 12:11:10.281 25944 25986 E com.jme3.app.AndroidHarness:
Before this Exception, the log shows the following lines, which may be related:
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: WARNING Bad compile of:
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 1 m_ColorMap??
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 2 uniform sampler2D m_Texture;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 3 uniform sampler2D m_DepthTexture;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 4 varying vec2 texCoord;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 5
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 6 uniform vec4 m_FogColor;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 7 uniform float m_FogDensity;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 8 uniform float m_FogDistance;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 9
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 10 vec2 m_FrustumNearFar=vec2(1.0,m_FogDistance);
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 11 const float LOG2 = 1.442695;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 12
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 13 void main() {
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 14 vec4 texVal = texture2D(m_Texture, texCoord);
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 15 float fogVal =texture2D(m_DepthTexture,texCoord).r;
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 16 float depth= (2.0 * m_FrustumNearFar.x) / (m_FrustumNearFar.y + m_FrustumNearFar.x - fogVal* (m_FrustumNearFar.y-m_FrustumNearFar.x));
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 17
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 18 float fogFactor = exp2( -m_FogDensity * m_FogDensity * depth * depth * LOG2 );
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 19 fogFactor = clamp(fogFactor, 0.0, 1.0);
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 20 gl_FragColor =mix(m_FogColor,texVal,fogFactor);
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 21
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer: 22 }
05-18 12:11:10.271 25944 25986 W com.jme3.renderer.android.OGLESShaderRenderer:
Does somebody have any idea, how I may proceed next to conquer this bug?