This is the error when using the TestSSAO.java:
Mai 13, 2014 8:57:20 PM com.jme3.system.JmeDesktopSystem initialize
Information: Running on jMonkeyEngine 3.0.0 RC2
Mai 13, 2014 8:57:21 PM com.jme3.system.Natives extractNativeLibs
Information: Extraction Directory: /Users/paulhoepner/Studium/Master-Arbeit/OpenDS/Source/opends_2.0_src
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: Lwjgl 2.9.0 context running on thread LWJGL Renderer Thread
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: Adapter: null
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: Driver Version: null
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: Vendor: NVIDIA Corporation
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: OpenGL Version: 2.1 NVIDIA-8.24.9 310.40.25f01
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: Renderer: NVIDIA GeForce GT 650M OpenGL Engine
Mai 13, 2014 8:57:21 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
Information: GLSL Ver: 1.20
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio Device: OpenAL Soft
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio Vendor: OpenAL Community
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio Renderer: OpenAL Soft
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio Version: 1.1 ALSOFT 1.15.1
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: AudioRenderer supports 64 channels
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio effect extension version: 1.0
Mai 13, 2014 8:57:21 PM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread
Information: Audio max auxilary sends: 4
Mai 13, 2014 8:57:22 PM com.jme3.renderer.lwjgl.LwjglRenderer updateShaderSourceData
Warnung: Bad compile of:
1 #version 120
2 uniform vec2 g_Resolution;
3 uniform vec2 m_FrustumNearFar;
4 uniform sampler2D m_Texture;
5 uniform sampler2D m_Normals;
6 uniform sampler2D m_RandomMap;
7 uniform sampler2D m_DepthTexture;
8 uniform vec3 m_FrustumCorner;
9 uniform float m_SampleRadius;
10 uniform float m_Intensity;
11 uniform float m_Scale;
12 uniform float m_Bias;
13 uniform bool m_UseOnlyAo;
14 uniform bool m_UseAo;
15 uniform vec2[4] m_Samples;
16
17 varying vec2 texCoord;
18
19 float depthv;
20
21 vec3 getPosition(in vec2 uv){
22 //Reconstruction from depth
23 depthv =texture2D(m_DepthTexture,uv).r;
24 float depth= (2.0 * m_FrustumNearFar.x) / (m_FrustumNearFar.y + m_FrustumNearFar.x - depthv* (m_FrustumNearFar.y-m_FrustumNearFar.x));
25
26 //one frustum corner method
27 float x = mix(-m_FrustumCorner.x, m_FrustumCorner.x, uv.x);
28 float y = mix(-m_FrustumCorner.y, m_FrustumCorner.y, uv.y);
29
30 return depth* vec3(x, y, m_FrustumCorner.z);
31 }
32
33 vec3 getNormal(in vec2 uv){
34 return normalize(texture2D(m_Normals, uv).xyz * 2.0 - 1.0);
35 }
36
37 vec2 getRandom(in vec2 uv){
38 vec4 rand=texture2D(m_RandomMap,g_Resolution.zw * uv / 128.0 * 3.0)2.0 -1.0;
39 return normalize(rand.xy);
40 }
41
42 float doAmbientOcclusion(in vec2 tc, in vec3 pos, in vec3 norm){
43 vec3 diff = getPosition(tc)- pos;
44 vec3 v = normalize(diff);
45 float d = length(diff) * m_Scale;
46
47 return max(0.0, dot(norm, v) - m_Bias) * ( 1.0/(1.0 + d) ) * m_Intensity;
48 }
49
50 vec2 reflection(in vec2 v1,in vec2 v2){
51 vec2 result= 2.0 * dot(v2, v1) * v2;
52 result=v1-result;
53 return result;
54 }
55
56
57 //const vec2 vec[4] = vec2[4](vec2(1.0,0.0), vec2(-1.0,0.0), vec2(0.0,1.0), vec2(0.0,-1.0));
58 void main(){
59
60 float result;
61
62 //vec2 vec[4] = { vec2(1.0, 0.0), vec2(-1.0, 0.0), vec2(0.0, 1.0), vec2(0.0, -1.0) };
63 vec3 position = getPosition(texCoord);
64 //optimization, do not calculate AO if depth is 1
65 if(depthv==1.0){
66 gl_FragColor=vec4(1.0);
67 return;
68 }
69 vec3 normal = getNormal(texCoord);
70 vec2 rand = getRandom(texCoord);
71
72 float ao = 0.0;
73 float rad =m_SampleRadius / position.z;
74
75
76 int iterations = 4;
77 for (int j = 0; j < iterations; ++j){
78 vec2 coord1 = reflection(vec2(m_Samples[j]), vec2(rand)) * vec2(rad,rad);
79 vec2 coord2 = vec2(coord1.x 0.707 - coord1.y* 0.707, coord1.x* 0.707 + coord1.y* 0.707) ;
80
81 ao += doAmbientOcclusion(texCoord + coord1.xy * 0.25, position, normal);
82 ao += doAmbientOcclusion(texCoord + coord2 * 0.50, position, normal);
83 ao += doAmbientOcclusion(texCoord + coord1.xy * 0.75, position, normal);
84 ao += doAmbientOcclusion(texCoord + coord2 * 1.00, position, normal);
85 }
86 ao /= float(iterations) * 4.0;
87 result = 1.0 - ao;
88
89 gl_FragColor=vec4(result);
90 }
Mai 13, 2014 8:57:22 PM com.jme3.app.Application handleError
Schwerwiegend: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
com.jme3.renderer.RendererException: compile error in:ShaderSource[name=Common/MatDefs/SSAO/ssao.frag, defines, type=Fragment, language=GLSL120] error:ERROR: 0:38: Swizzle component ‘z’ indexes beyond end of input vector (length 2)
ERROR: 0:39: Use of undeclared identifier ‘rand’
at com.jme3.renderer.lwjgl.LwjglRenderer.updateShaderSourceData(LwjglRenderer.java:1026)
at com.jme3.renderer.lwjgl.LwjglRenderer.updateShaderData(LwjglRenderer.java:1049)
at com.jme3.renderer.lwjgl.LwjglRenderer.setShader(LwjglRenderer.java:1115)
at com.jme3.material.Material.render(Material.java:1116)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:523)
at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:202)
at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:254)
at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:293)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:987)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1029)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:252)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:151)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:185)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:228)
at java.lang.Thread.run(Thread.java:744)