My problem device ‘s CPU is Marvell PXA920,GPU is VIVANTE GC530,other device haven’t this problem.But my device is not more ,Maybe this problem will appear in other android devices
after logcat:
E/OGLESShaderRenderer( 3936): Errooooooooooot(9)
W/OGLESShaderRenderer( 3936): WARNING OGLESShaderRenderer 11:52:23 Bad compile of:
W/OGLESShaderRenderer( 3936): #define DIFFUSEMAP 1
W/OGLESShaderRenderer( 3936): #define MATERIAL_COLORS 1
W/OGLESShaderRenderer( 3936): #ifdef SPHERE_MAP
W/OGLESShaderRenderer( 3936): #define ENVMAP sampler2D
W/OGLESShaderRenderer( 3936): #define TEXENV texture2D
W/OGLESShaderRenderer( 3936): #else
W/OGLESShaderRenderer( 3936): #define ENVMAP samplerCube
W/OGLESShaderRenderer( 3936): #define TEXENV textureCube
W/OGLESShaderRenderer( 3936): #endif
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // converts a normalized direction vector
W/OGLESShaderRenderer( 3936): // into a texture coordinate for fetching
W/OGLESShaderRenderer( 3936): // texel from a sphere map
W/OGLESShaderRenderer( 3936): vec2 Optics_SphereCoord(in vec3 dir){
W/OGLESShaderRenderer( 3936): float dzplus1 = dir.z + 1.0;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // compute 1/2p
W/OGLESShaderRenderer( 3936): // NOTE: this simplification only works if dir is normalized.
W/OGLESShaderRenderer( 3936): float inv_two_p = 1.414 * sqrt(dzplus1);
W/OGLESShaderRenderer( 3936): //float inv_two_p = sqrt(dir.x * dir.x + dir.y * dir.y + dzplus1 *
dzplus1);
W/OGLESShaderRenderer( 3936): inv_two_p *= 2.0;
W/OGLESShaderRenderer( 3936): inv_two_p = 1.0 / inv_two_p;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // compute texcoord
W/OGLESShaderRenderer( 3936): return (dir.xy * vec2(inv_two_p)) + vec2(0.5);
W/OGLESShaderRenderer( 3936): }
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): vec4 Optics_GetEnvColor(in ENVMAP envMap, in vec3 dir){
W/OGLESShaderRenderer( 3936): #ifdef SPHERE_MAP
W/OGLESShaderRenderer( 3936): return texture2D(envMap, Optics_SphereCoord(dir));
W/OGLESShaderRenderer( 3936): #else
W/OGLESShaderRenderer( 3936): return textureCube(envMap, dir);
W/OGLESShaderRenderer( 3936): #endif
W/OGLESShaderRenderer( 3936): }
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): #if (defined(PARALLAXMAP) || (defined(NORMALMAP_PARALLAX) && defined(N
ORMALMAP))) && !defined(VERTEX_LIGHTING)
W/OGLESShaderRenderer( 3936): vec2 steepParallaxOffset(sampler2D parallaxMap, vec3 vViewDir,vec2
texCoord,float parallaxScale){
W/OGLESShaderRenderer( 3936): vec2 vParallaxDirection = normalize( vViewDir.xy );
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // The length of this vector determines the furthest amount of
displacement: (Ati’s comment)
W/OGLESShaderRenderer( 3936): float fLength = length( vViewDir );
W/OGLESShaderRenderer( 3936): float fParallaxLength = sqrt( fLength * fLength - vViewDir.z *
vViewDir.z ) / vViewDir.z;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // Compute the actual reverse parallax displacement vector: (A
ti’s comment)
W/OGLESShaderRenderer( 3936): vec2 vParallaxOffsetTS = vParallaxDirection * fParallaxLength;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): // Need to scale the amount of displacement to account for dif
ferent height ranges
W/OGLESShaderRenderer( 3936): // in height maps. This is controlled by an artist-editable pa
rameter: (Ati’s comment)
W/OGLESShaderRenderer( 3936): parallaxScale *=0.3;
W/OGLESShaderRenderer( 3936): vParallaxOffsetTS *= parallaxScale;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): vec3 eyeDir = normalize(vViewDir).xyz;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): float nMinSamples = 6.0;
W/OGLESShaderRenderer( 3936): float nMaxSamples = 1000.0 * parallaxScale;
W/OGLESShaderRenderer( 3936): float nNumSamples = mix( nMinSamples, nMaxSamples, 1.0 - eyeDi
r.z ); //In reference shader: int nNumSamples = (int)(lerp( nMinSamples, nMaxSamples, dot( eyeDirW
S, N ) ));
W/OGLESShaderRenderer( 3936): float fStepSize = 1.0 / nNumSamples;
W/OGLESShaderRenderer( 3936): float fCurrHeight = 0.0;
W/OGLESShaderRenderer( 3936): float fPrevHeight = 1.0;
W/OGLESShaderRenderer( 3936): float fNextHeight = 0.0;
W/OGLESShaderRenderer( 3936): float nStepIndex = 0.0;
W/OGLESShaderRenderer( 3936): vec2 vTexOffsetPerStep = fStepSize * vParallaxOffsetTS;
W/OGLESShaderRenderer( 3936): vec2 vTexCurrentOffset = texCoord;
W/OGLESShaderRenderer( 3936): float fCurrentBound = 1.0;
W/OGLESShaderRenderer( 3936): float fParallaxAmount = 0.0;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): while ( nStepIndex < nNumSamples && fCurrHeight <= fCurrentBou
nd ) {
W/OGLESShaderRenderer( 3936): vTexCurrentOffset -= vTexOffsetPerStep;
W/OGLESShaderRenderer( 3936): fPrevHeight = fCurrHeight;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): #ifdef NORMALMAP_PARALLAX
W/OGLESShaderRenderer( 3936): //parallax map is stored in the alpha channel of the no
rmal map
W/OGLESShaderRenderer( 3936): fCurrHeight = texture2DLod( parallaxMap, vTexCurrentOff
set,1.0).a;
W/OGLESShaderRenderer( 3936): #else
W/OGLESShaderRenderer( 3936): //parallax map is a texture
W/OGLESShaderRenderer( 3936): fCurrHeight = texture2DLod( parallaxMap, vTexCurrentOff
set,1.0).r;
W/OGLESShaderRenderer( 3936): #endif
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): fCurrentBound -= fStepSize;
W/OGLESShaderRenderer( 3936): nStepIndex+=1.0;
W/OGLESShaderRenderer( 3936): }
W/OGLESShaderRenderer( 3936): vec2 pt1 = vec2( fCurrentBound, fCurrHeight );
W/OGLESShaderRenderer( 3936): vec2 pt2 = vec2( fCurrentBound + fStepSize, fPrevHeight );
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): float fDelta2 = pt2.x - pt2.y;
W/OGLESShaderRenderer( 3936): float fDelta1 = pt1.x - pt1.y;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): float fDenominator = fDelta2 - fDelta1;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): fParallaxAmount = (pt1.x * fDelta2 - pt2.x * fDelta1 ) / fDeno
minator;
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): vec2 vParallaxOffset = vParallaxOffsetTS * (1.0 - fParallaxAmo
unt );
W/OGLESShaderRenderer( 3936): return texCoord - vParallaxOffset;
W/OGLESShaderRenderer( 3936): }
W/OGLESShaderRenderer( 3936):
W/OGLESShaderRenderer( 3936): vec2 classicParallaxOffset(sampler2D parallaxMap, vec3 vViewDir,ve
c2 texCoord,float parallaxScale){
W/OGLESShaderRenderer( 3936): float h;
W/OGLESShaderRenderer( 3936): h = texture2D(parallaxMap, texCoord).a;
W/OGLESShaderRenderer( 3936): #ifdef NORMALMAP_PARALLAX
W/OGLESShaderRenderer( 3936): //parallax map is stored in the alpha channel of the no
rmal map
W/OGLESShaderRenderer( 3936): h = te
D/KeyguardViewMediator( 1349): setHidden false
D/PowerManagerService( 1349): setScreenBrightnessOverride -1
D/PowerManagerService( 1349): setButtonBrightnessOverride -1
D/KeyguardViewMediator( 1349): setHidden false
D/KeyguardViewMediator( 1349): setHidden false
D/PowerManagerService( 1349): setScreenBrightnessOverride -1
D/PowerManagerService( 1349): setButtonBrightnessOverride -1
D/PowerManagerService( 1349): setScreenBrightnessOverride -1
D/PowerManagerService( 1349): setButtonBrightnessOverride -1
W/dalvikvm( 3936): threadid=7: thread exiting with uncaught exception (group=0x4001d830)
I/ActivityThread( 3936): enter process activity msg = 125
I/ActivityThread( 3936): exit process activity msg = 125
E/AndroidHarness( 3936): Exception thrown in Thread[GLThread 9,5,main]
E/AndroidHarness( 3936): com.jme3.renderer.RendererException: compile error in:ShaderSource[name=Com
mon/MatDefs/Light/Lighting.frag, defines, type=Fragment] error:(37:0) : error : Not expected token(’
&&’) in expression.
E/AndroidHarness( 3936): (149:0) : error : Not expected token(’&&’) in expression.
E/AndroidHarness( 3936): (255:0) : error : Not expected token(’&&’) in expression.
E/AndroidHarness( 3936):
E/AndroidHarness( 3936): at com.jme3.renderer.android.OGLESShaderRenderer.updateShaderSourceD
ata(OGLESShaderRenderer.java:1055)
E/AndroidHarness( 3936): at com.jme3.renderer.android.OGLESShaderRenderer.updateShaderData(OG
LESShaderRenderer.java:1100)
E/AndroidHarness( 3936): at com.jme3.renderer.android.OGLESShaderRenderer.setShader(OGLESShad
erRenderer.java:1205)
E/AndroidHarness( 3936): at com.jme3.material.Material.renderMultipassLighting(Material.java:
799)
E/AndroidHarness( 3936): at com.jme3.material.Material.render(Material.java:1028)
E/AndroidHarness( 3936): at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java
:658)
E/AndroidHarness( 3936): at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueu
e.java:299)
E/AndroidHarness( 3936): at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:
351)
E/AndroidHarness( 3936): at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManage
r.java:894)
E/AndroidHarness( 3936): at com.jme3.renderer.RenderManager.flushQueue(RenderManager.java:850
)
E/AndroidHarness( 3936): at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java
:1126)
E/AndroidHarness( 3936): at com.jme3.renderer.RenderManager.render(RenderManager.java:1168)
E/AndroidHarness( 3936): at com.jme3.app.SimpleApplication.update(SimpleApplication.java:246)
E/AndroidHarness( 3936): at com.jme3.system.android.OGLESContext.onDrawFrame(OGLESContext.jav
a:384)
E/AndroidHarness( 3936): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.ja
va:1332)
E/AndroidHarness( 3936): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116
)
I/WindowManager( 1349): updateFocusedWindowLocked newFocus=Window{46218890 com.mycompany.mygame/com.
mycompany.mygame.MainActivity paused=false} mode=1 mCurrentFocus = Window{4615f370 com.mycompany.myg
ame/com.mycompany.mygame.MainActivity paused=false}
Your driver is broken, contact your GPU’s manufacturer to have it fixed.
The error:
[java]error:(37:0) : error : Not expected token(’&&’) in expression.[/java]
refers to this line in the shader:
[java]#if (defined(PARALLAXMAP) || (defined(NORMALMAP_PARALLAX) && defined(NORMALMAP))) && !defined(VERTEX_LIGHTING)[/java]
This is proper usage of the GLSL preprocessor as defined in the GLSL spec.