@nehon Could you fix this shader, please?
янв 22, 2017 10:12:32 AM com.jme3.renderer.opengl.GLRenderer updateShaderSourceData
WARNING: Bad compile of:
1 #version 150 core
2 #define SRGB 1
3 #define FRAGMENT_SHADER 1
4 #extension GL_ARB_texture_multisample : enable
5 // -- begin import Common/ShaderLib/MultiSample.glsllib --
6 // -- begin import Common/ShaderLib/GLSLCompat.glsllib --
7 #if defined GL_ES
8 # define hfloat highp float
9 # define hvec2 highp vec2
10 # define hvec3 highp vec3
11 # define hvec4 highp vec4
12 # define lfloat lowp float
13 # define lvec2 lowp vec2
14 # define lvec3 lowp vec3
15 # define lvec4 lowp vec4
16 #else
17 # define hfloat float
18 # define hvec2 vec2
19 # define hvec3 vec3
20 # define hvec4 vec4
21 # define lfloat float
22 # define lvec2 vec2
23 # define lvec3 vec3
24 # define lvec4 vec4
25 #endif
26
27 #if __VERSION__ >= 130
28 out vec4 outFragColor;
29 # define texture1D texture
30 # define texture2D texture
31 # define texture3D texture
32 # define textureCube texture
33 # define texture2DLod textureLod
34 # define textureCubeLod textureLod
35 # if defined VERTEX_SHADER
36 # define varying out
37 # define attribute in
38 # elif defined FRAGMENT_SHADER
39 # define varying in
40 # define gl_FragColor outFragColor
41 # endif
42 #endif
43 // -- end import Common/ShaderLib/GLSLCompat.glsllib --
44
45 uniform int m_NumSamples;
46 uniform int m_NumSamplesDepth;
47
48 #ifdef RESOLVE_MS
49 #define COLORTEXTURE sampler2DMS
50 #else
51 #define COLORTEXTURE sampler2D
52 #endif
53
54 #ifdef RESOLVE_DEPTH_MS
55 #define DEPTHTEXTURE sampler2DMS
56 #else
57 #define DEPTHTEXTURE sampler2D
58 #endif
59
60 // NOTE: Only define multisample functions if multisample is available
61 #if defined(GL_ARB_texture_multisample)
62 vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){
63 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
64 vec4 color = vec4(0.0);
65 for (int i = 0; i < numSamples; i++){
66 color += texelFetch(tex, iTexC, i);
67 }
68 return color / float(numSamples);
69 }
70
71 vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sampleId){
72 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
73 return texelFetch(tex, iTexC, sampleId);
74 }
75
76 vec4 getColor(in sampler2DMS tex, in vec2 texC){
77 return textureFetch(tex, texC, m_NumSamples);
78 }
79
80 vec4 getColorSingle(in sampler2DMS tex, in vec2 texC){
81 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
82 return texelFetch(tex, iTexC, 0);
83 }
84
85 vec4 getDepth(in sampler2DMS tex,in vec2 texC){
86 return textureFetch(tex,texC,m_NumSamplesDepth);
87 }
88
89 #endif
90
91 vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sampleId){
92 return texture2D(tex,texC);
93 }
94
95 vec4 getColor(in sampler2D tex, in vec2 texC){
96 return texture2D(tex,texC);
97 }
98
99 vec4 getColorSingle(in sampler2D tex, in vec2 texC){
100 return texture2D(tex, texC);
101 }
102
103 vec4 getDepth(in sampler2D tex,in vec2 texC){
104 return texture2D(tex,texC);
105 }
106
107 // -- end import Common/ShaderLib/MultiSample.glsllib --
108
109 uniform COLORTEXTURE m_Texture;
110 uniform DEPTHTEXTURE m_DepthTexture;
111
112 uniform sampler2D m_NormalsTexture;
113 uniform vec2 g_ResolutionInverse;
114
115 uniform vec4 m_EdgeColor;
116
117 uniform float m_EdgeWidth;
118 uniform float m_EdgeIntensity;
119
120 uniform float m_NormalThreshold;
121 uniform float m_DepthThreshold;
122
123 uniform float m_NormalSensitivity;
124 uniform float m_DepthSensitivity;
125
126 in vec2 texCoord;
127 out vec4 outFragColor;
128
129 vec4 fetchNormalDepth(vec2 tc){
130 vec4 nd;
131 nd.xyz = texture2D(m_NormalsTexture, tc).rgb;
132 nd.w = fetchTextureSample(m_DepthTexture, tc,0).r;
133 return nd;
134 }
135
136 void main(){
137 vec3 color = getColor(m_Texture, texCoord).rgb;
138
139 vec2 edgeOffset = vec2(m_EdgeWidth) * g_ResolutionInverse;
140 vec4 n1 = fetchNormalDepth(texCoord + vec2(-1.0, -1.0) * edgeOffset);
141 vec4 n2 = fetchNormalDepth(texCoord + vec2( 1.0, 1.0) * edgeOffset);
142 vec4 n3 = fetchNormalDepth(texCoord + vec2(-1.0, 1.0) * edgeOffset);
143 vec4 n4 = fetchNormalDepth(texCoord + vec2( 1.0, -1.0) * edgeOffset);
144
145 // Work out how much the normal and depth values are changing.
146 vec4 diagonalDelta = abs(n1 - n2) + abs(n3 - n4);
147
148 float normalDelta = dot(diagonalDelta.xyz, vec3(1.0));
149 float depthDelta = diagonalDelta.w;
150
151 // Filter out very small changes, in order to produce nice clean results.
152 normalDelta = clamp((normalDelta - m_NormalThreshold) * m_NormalSensitivity, 0.0, 1.0);
153 depthDelta = clamp((depthDelta - m_DepthThreshold) * m_DepthSensitivity, 0.0, 1.0);
154
155 // Does this pixel lie on an edge?
156 float edgeAmount = clamp(normalDelta + depthDelta, 0.0, 1.0) * m_EdgeIntensity;
157
158 // Apply the edge detection result to the main scene color.
159 //color *= (1.0 - edgeAmount);
160 color = mix (color,m_EdgeColor.rgb,edgeAmount);
161
162 outFragColor = vec4(color, 1.0);
163 }
WARNING 10:12:32:983 Editor: com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Post/CartoonEdge15.frag, defines, type=Fragment, language=GLSL150]
0(127) : error C1038: declaration of "outFragColor" conflicts with previous declaration at 0(28)
at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1244)
at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1271)
at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1335)
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:970)
at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:616)
at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:218)
at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:301)
at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:320)
at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1111)
at com.jme3.renderer.RenderManager.render(RenderManager.java:1154)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:253)
at com.jme3x.jfx.injfx.JmeToJFXApplication.update(JmeToJFXApplication.java:21)
at com.ss.editor.Editor.update(Editor.java:379)
at com.jme3.system.lwjgl.LwjglWindow.runLoop(LwjglWindow.java:524)
at com.jme3.system.lwjgl.LwjglWindow.run(LwjglWindow.java:607)
at com.jme3.system.lwjgl.LwjglWindow.create(LwjglWindow.java:445)
at com.jme3x.jfx.injfx.JmeOffscreenSurfaceContext.create(JmeOffscreenSurfaceContext.java:202)
at com.jme3.app.LegacyApplication.start(LegacyApplication.java:463)
at com.jme3.app.LegacyApplication.start(LegacyApplication.java:424)
at com.jme3.app.SimpleApplication.start(SimpleApplication.java:125)
at com.ss.editor.Editor.start(Editor.java:232)
at java.lang.Thread.run(Thread.java:745)