Setting a GlowMap causes RenderException ”Shader link failure”

I have a BloomFilter set to GlowMode.Objects, and I wanted to try to make my stars glow. They previously had a star.png used as a ColorMap, and that worked fine. Also, I can set GlowColor, and the object will change to that color (even if ColorMap is still set) and glow. But if I try to use the ColorMap star.png as a GlowMap instead of setting ColorMap and GlowColor, the game starts fine as long as no stars are visible at the start location, but as soon as it tries to render a star on-screen I get the RenderException.



pre type="java"
Geometry star = new Geometry(“star”, new Sphere(20, 20, 1));


Material material = new Material(assetManager, “Common/MatDefs/Misc/Unshaded.j3md”);


material.setTexture(“GlowMap”, assetManager.loadTexture(“Models/star.png”));


star.setMaterial(material);
/pre



And stars have a PointLight light source inside them to light the objects around them.



And this is the exception:



SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]

com.jme3.renderer.RendererException: Shader link failure, shader:Shader[language=GLSL100, numSources=2, numUniforms=2, shaderSources=[ShaderSource[name=Common/MatDefs/Misc/Unshaded.vert, defines, type=Vertex], ShaderSource[name=Common/MatDefs/Light/Glow.frag, defines, type=Fragment]]] info:Fragment shader uses varying texCoord but vertex shader does not write to it.

at com.jme3.renderer.lwjgl.LwjglRenderer.updateShaderData(LwjglRenderer.java:959)

at com.jme3.renderer.lwjgl.LwjglRenderer.setShader(LwjglRenderer.java:993)

at com.jme3.material.Material.render(Material.java:862)

at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:422)

at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:132)

at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:183)

at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:575)

at com.jme3.post.filters.BloomFilter.preRender(BloomFilter.java:249)

at com.jme3.post.FilterPostProcessor.postQueue(FilterPostProcessor.java:159)

at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:717)

at com.jme3.renderer.RenderManager.render(RenderManager.java:742)

at com.jme3.app.SimpleApplication.update(SimpleApplication.java:249)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:158)

at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:203)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:221)

at java.lang.Thread.run(Thread.java:619)



Again, the game stars and runs fine until it tries to render the star on-screen (that is, until the star comes into view), at which point it throws this exception instead of rendering the star. And ColorMap/GlowColor work fine, just not GlowMap.



And before that point, the filter gets added with



pre type="php"
FilterPostProcessor fpp = new FilterPostProcessor(Main.v().getAssetManager());


BloomFilter bloom = new BloomFilter(BloomFilter.GlowMode.Objects);


fpp.addFilter(bloom);


getViewPort().addProcessor(fpp);
/pre



Is there something I am doing wrong?

Should be fixed now

May 30, 2011 7:44:28 PM com.jme3.app.Application handleError

SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]

com.jme3.renderer.RendererException: Shader link failure, shader:Shader[language=GLSL100, numSources=2, numUniforms=3, shaderSources=[ShaderSource[name=Common/MatDefs/Misc/Unshaded.vert, defines, type=Vertex], ShaderSource[name=Common/MatDefs/Light/Glow.frag, defines, type=Fragment]]] info:Fragment shader uses varying texCoord but vertex shader does not write to it.

at com.jme3.renderer.lwjgl.LwjglRenderer.updateShaderData(LwjglRenderer.java:1075)

at com.jme3.renderer.lwjgl.LwjglRenderer.setShader(LwjglRenderer.java:1110)

at com.jme3.material.Material.render(Material.java:890)

at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:414)

at com.jme3.renderer.queue.RenderQueue.renderGeometryList(RenderQueue.java:173)

at com.jme3.renderer.queue.RenderQueue.renderQueue(RenderQueue.java:225)

at com.jme3.renderer.RenderManager.renderViewPortQueues(RenderManager.java:574)

at com.jme3.post.filters.BloomFilter.preRender(BloomFilter.java:212)

at com.jme3.post.FilterPostProcessor.postQueue(FilterPostProcessor.java:182)

at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:721)

at com.jme3.renderer.RenderManager.render(RenderManager.java:748)

at com.jme3.app.SimpleApplication.update(SimpleApplication.java:257)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:143)

at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:171)

at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:217)

at java.lang.Thread.run(Unknown Source)



This bug still occurs. Strangely enough, it runs fine on my desktop machine, but throws the exception on my laptop.

it’s fixed in last svn

I built the latest from svn 10 mins ago and this bug still occurs on my laptop. When I was looking around in Unshaded.vert, I didn’t see “texCoord” exported anywhere (only texCoord1, etc). But, that doesn’t really explain why it works on some machines. For what it’s worth, the video card in this laptop is “Mobile Intel® 4 Series Express Chipset Family”