Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Mar 07, 2024 10:31:04 PM com.jme3.system.JmeDesktopSystem initialize
- INFO: Running on jMonkeyEngine 3.7.0-alpha2
- * Branch: HEAD
- * Git Hash: e584cb1
- * Build Date: 2024-03-04
- Mar 07, 2024 10:31:06 PM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
- INFO: OpenGL Renderer Information
- * Vendor: ATI Technologies Inc.
- * Renderer: Radeon RX 570 Series
- * OpenGL Version: 4.6.14802 Compatibility Profile Context 21.12.1 30.0.14011.3017
- * GLSL Version: 4.60
- * Profile: Compatibility
- Mar 07, 2024 10:31:06 PM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
- INFO: LWJGL 2.9.5 context running on thread jME3 Main
- * Graphics Adapter: igdumdim64
- * Driver Version: 20.19.15.4531
- * Scaling Factor: 1
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MeshLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SkeletonLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.ogre.MaterialLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.ogre.SceneLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.fbx.FbxLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GltfLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.gltf.BinLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.scene.plugins.gltf.GlbLoader
- Mar 07, 2024 10:31:06 PM com.jme3.asset.AssetConfig loadText
- WARNING: Cannot find loader com.jme3.audio.plugins.OGGLoader
- SLF4J(W): No SLF4J providers were found.
- SLF4J(W): Defaulting to no-operation (NOP) logger implementation
- SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
- Libbulletjme version 18.5.2 initializing
- Mar 07, 2024 10:31:08 PM com.jme3.renderer.opengl.GLRenderer updateShaderSourceData
- WARNING: Bad compile of:
- 1 #version 150 core
- 2 #define FRAGMENT_SHADER 1
- 3 #define BOUND_DRAW_BUFFER 0
- 4 #define HARDWARE_SHADOWS 1
- 5 #define FILTER_MODE 1
- 6 #define PCFEDGE 1.0
- 7 #define SHADOWMAP_SIZE 1024.0
- 8 #define PSSM 1
- 9 #define BACKFACE_SHADOWS 1
- 10 #extension GL_ARB_texture_multisample : enable
- 11 #extension GL_OES_gpu_shader5 : enable
- 12 #extension GL_ARB_gpu_shader5 : enable
- 13 // -- begin import Common/ShaderLib/GLSLCompat.glsllib --
- 14 #ifdef FRAGMENT_SHADER
- 15 precision highp float;
- 16 precision highp int;
- 17 precision highp sampler2DArray;
- 18 precision highp sampler2DShadow;
- 19 precision highp samplerCube;
- 20 precision highp sampler3D;
- 21 precision highp sampler2D;
- 22 #if __VERSION__ >= 310
- 23 precision highp sampler2DMS;
- 24 #endif
- 25
- 26 #endif
- 27
- 28 #if defined GL_ES
- 29 # define hfloat highp float
- 30 # define hvec2 highp vec2
- 31 # define hvec3 highp vec3
- 32 # define hvec4 highp vec4
- 33 # define lfloat lowp float
- 34 # define lvec2 lowp vec2
- 35 # define lvec3 lowp vec3
- 36 # define lvec4 lowp vec4
- 37 #else
- 38 # define hfloat float
- 39 # define hvec2 vec2
- 40 # define hvec3 vec3
- 41 # define hvec4 vec4
- 42 # define lfloat float
- 43 # define lvec2 vec2
- 44 # define lvec3 vec3
- 45 # define lvec4 vec4
- 46 #endif
- 47
- 48 #if __VERSION__ >= 130
- 49
- 50 #ifdef FRAGMENT_SHADER
- 51 #ifdef GL_ES
- 52 #ifdef BOUND_DRAW_BUFFER
- 53
- 54 #if 0<=BOUND_DRAW_BUFFER
- 55 #if BOUND_DRAW_BUFFER == 0
- 56 layout( location = 0 ) out highp vec4 outFragColor;
- 57 #else
- 58 layout( location = 0 ) out highp vec4 outNOP0;
- 59 #endif
- 60 #endif
- 61
- 62 #if 1<=BOUND_DRAW_BUFFER
- 63 #if BOUND_DRAW_BUFFER == 1
- 64 layout( location = 1 ) out highp vec4 outFragColor;
- 65 #else
- 66 layout( location = 1 ) out highp vec4 outNOP1;
- 67 #endif
- 68 #endif
- 69
- 70 #if 2<=BOUND_DRAW_BUFFER
- 71 #if BOUND_DRAW_BUFFER == 2
- 72 layout( location = 2 ) out highp vec4 outFragColor;
- 73 #else
- 74 layout( location = 2 ) out highp vec4 outNOP2;
- 75 #endif
- 76 #endif
- 77
- 78 #if 3<=BOUND_DRAW_BUFFER
- 79 #if BOUND_DRAW_BUFFER == 3
- 80 layout( location = 3 ) out highp vec4 outFragColor;
- 81 #else
- 82 layout( location = 3 ) out highp vec4 outNOP3;
- 83 #endif
- 84 #endif
- 85
- 86 #if 4<=BOUND_DRAW_BUFFER
- 87 #if BOUND_DRAW_BUFFER == 4
- 88 layout( location = 4 ) out highp vec4 outFragColor;
- 89 #else
- 90 layout( location = 4 ) out highp vec4 outNOP4;
- 91 #endif
- 92 #endif
- 93
- 94 #if 5<=BOUND_DRAW_BUFFER
- 95 #if BOUND_DRAW_BUFFER == 5
- 96 layout( location = 5 ) out highp vec4 outFragColor;
- 97 #else
- 98 layout( location = 5 ) out highp vec4 outNOP5;
- 99 #endif
- 100 #endif
- 101
- 102 #if 6<=BOUND_DRAW_BUFFER
- 103 #if BOUND_DRAW_BUFFER == 6
- 104 layout( location = 6 ) out highp vec4 outFragColor;
- 105 #else
- 106 layout( location = 6 ) out highp vec4 outNOP6;
- 107 #endif
- 108 #endif
- 109
- 110 #if 7<=BOUND_DRAW_BUFFER
- 111 #if BOUND_DRAW_BUFFER == 7
- 112 layout( location = 7 ) out highp vec4 outFragColor;
- 113 #else
- 114 layout( location = 7 ) out highp vec4 outNOP7;
- 115 #endif
- 116 #endif
- 117
- 118 #if 8<=BOUND_DRAW_BUFFER
- 119 #if BOUND_DRAW_BUFFER == 8
- 120 layout( location = 8 ) out highp vec4 outFragColor;
- 121 #else
- 122 layout( location = 8 ) out highp vec4 outNOP8;
- 123 #endif
- 124 #endif
- 125
- 126 #if 9<=BOUND_DRAW_BUFFER
- 127 #if BOUND_DRAW_BUFFER == 9
- 128 layout( location = 9 ) out highp vec4 outFragColor;
- 129 #else
- 130 layout( location = 9 ) out highp vec4 outNOP9;
- 131 #endif
- 132 #endif
- 133
- 134 #if 10<=BOUND_DRAW_BUFFER
- 135 #if BOUND_DRAW_BUFFER == 10
- 136 layout( location = 10 ) out highp vec4 outFragColor;
- 137 #else
- 138 layout( location = 10 ) out highp vec4 outNOP10;
- 139 #endif
- 140 #endif
- 141
- 142 #if 11<=BOUND_DRAW_BUFFER
- 143 #if BOUND_DRAW_BUFFER == 11
- 144 layout( location = 11 ) out highp vec4 outFragColor;
- 145 #else
- 146 layout( location = 11 ) out highp vec4 outNOP11;
- 147 #endif
- 148 #endif
- 149
- 150 #if 12<=BOUND_DRAW_BUFFER
- 151 #if BOUND_DRAW_BUFFER == 12
- 152 layout( location = 12 ) out highp vec4 outFragColor;
- 153 #else
- 154 layout( location = 12 ) out highp vec4 outNOP12;
- 155 #endif
- 156 #endif
- 157
- 158 #if 13<=BOUND_DRAW_BUFFER
- 159 #if BOUND_DRAW_BUFFER == 13
- 160 layout( location = 13 ) out highp vec4 outFragColor;
- 161 #else
- 162 layout( location = 13 ) out highp vec4 outNOP13;
- 163 #endif
- 164 #endif
- 165
- 166 #if 14<=BOUND_DRAW_BUFFER
- 167 #if BOUND_DRAW_BUFFER == 14
- 168 layout( location = 14 ) out highp vec4 outFragColor;
- 169 #else
- 170 layout( location = 14 ) out highp vec4 outNOP14;
- 171 #endif
- 172 #endif
- 173 #else
- 174 out highp vec4 outFragColor;
- 175 #endif
- 176 #else
- 177 out vec4 outFragColor;
- 178 #endif
- 179 #endif
- 180
- 181 # define texture1D texture
- 182 # define texture2D texture
- 183 # define texture3D texture
- 184 # define textureCube texture
- 185 # define texture2DLod textureLod
- 186 # define textureCubeLod textureLod
- 187 # define texture2DArray texture
- 188 # if defined VERTEX_SHADER
- 189 # define varying out
- 190 # define attribute in
- 191 # elif defined FRAGMENT_SHADER
- 192 # define varying in
- 193 # define gl_FragColor outFragColor
- 194 # endif
- 195 #else
- 196 # define isnan(val) !(val<0.0||val>0.0||val==0.0)
- 197 #endif
- 198
- 199 #if __VERSION__ == 110
- 200 mat3 mat3_sub(mat4 m) {
- 201 return mat3(m[0].xyz, m[1].xyz, m[2].xyz);
- 202 }
- 203 #else
- 204 #define mat3_sub mat3
- 205 #endif
- 206
- 207 #if __VERSION__ <= 140
- 208 float determinant(mat2 m) {
- 209 return m[0][0] * m[1][1] - m[1][0] * m[0][1];
- 210 }
- 211
- 212 float determinant(mat3 m) {
- 213 return + m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
- 214 - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
- 215 + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);
- 216 }
- 217 #endif
- 218
- 219 #if __VERSION__ <= 130
- 220 mat2 inverse(mat2 m) {
- 221 return mat2(m[1][1], -m[0][1], -m[1][0], m[0][0]) / determinant(m);
- 222 }
- 223
- 224 mat3 inverse(mat3 m) {
- 225 return mat3(
- 226 + (m[1][1] * m[2][2] - m[2][1] * m[1][2]),
- 227 - (m[1][0] * m[2][2] - m[2][0] * m[1][2]),
- 228 + (m[1][0] * m[2][1] - m[2][0] * m[1][1]),
- 229 - (m[0][1] * m[2][2] - m[2][1] * m[0][2]),
- 230 + (m[0][0] * m[2][2] - m[2][0] * m[0][2]),
- 231 - (m[0][0] * m[2][1] - m[2][0] * m[0][1]),
- 232 + (m[0][1] * m[1][2] - m[1][1] * m[0][2]),
- 233 - (m[0][0] * m[1][2] - m[1][0] * m[0][2]),
- 234 + (m[0][0] * m[1][1] - m[1][0] * m[0][1])) / determinant(m);
- 235 }
- 236 #endif
- 237 // -- end import Common/ShaderLib/GLSLCompat.glsllib --
- 238 // -- begin import Common/ShaderLib/MultiSample.glsllib --
- 239
- 240 uniform int m_NumSamples;
- 241 uniform int m_NumSamplesDepth;
- 242
- 243 #ifdef RESOLVE_MS
- 244 #define COLORTEXTURE sampler2DMS
- 245 #else
- 246 #define COLORTEXTURE sampler2D
- 247 #endif
- 248
- 249 #ifdef RESOLVE_DEPTH_MS
- 250 #define DEPTHTEXTURE sampler2DMS
- 251 #else
- 252 #define DEPTHTEXTURE sampler2D
- 253 #endif
- 254
- 255 // NOTE: Only define multisample functions if multisample is available
- 256 #if defined(GL_ARB_texture_multisample) || (defined GL_ES && __VERSION__>=310)
- 257 vec4 textureFetch(in sampler2DMS tex,in vec2 texC, in int numSamples){
- 258 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
- 259 vec4 color = vec4(0.0);
- 260 for (int i = 0; i < numSamples; i++){
- 261 color += texelFetch(tex, iTexC, i);
- 262 }
- 263 return color / float(numSamples);
- 264 }
- 265
- 266 vec4 fetchTextureSample(in sampler2DMS tex,in vec2 texC,in int sampleId){
- 267 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
- 268 return texelFetch(tex, iTexC, sampleId);
- 269 }
- 270
- 271 vec4 getColor(in sampler2DMS tex, in vec2 texC){
- 272 return textureFetch(tex, texC, m_NumSamples);
- 273 }
- 274
- 275 vec4 getColorSingle(in sampler2DMS tex, in vec2 texC){
- 276 ivec2 iTexC = ivec2(texC * vec2(textureSize(tex)));
- 277 return texelFetch(tex, iTexC, 0);
- 278 }
- 279
- 280 vec4 getDepth(in sampler2DMS tex,in vec2 texC){
- 281 return textureFetch(tex,texC,m_NumSamplesDepth);
- 282 }
- 283
- 284 #endif
- 285
- 286 vec4 fetchTextureSample(in sampler2D tex,in vec2 texC,in int sampleId){
- 287 return texture2D(tex,texC);
- 288 }
- 289
- 290 vec4 getColor(in sampler2D tex, in vec2 texC){
- 291 return texture2D(tex,texC);
- 292 }
- 293
- 294 vec4 getColorSingle(in sampler2D tex, in vec2 texC){
- 295 return texture2D(tex, texC);
- 296 }
- 297
- 298 vec4 getDepth(in sampler2D tex,in vec2 texC){
- 299 return texture2D(tex,texC);
- 300 }
- 301 // -- end import Common/ShaderLib/MultiSample.glsllib --
- 302 // -- begin import Common/ShaderLib/Shadows.glsllib --
- 303 #if __VERSION__ >= 130
- 304 // Because gpu_shader5 is actually where those
- 305 // gather functions are declared to work on shadow maps
- 306 // This "if" statement is useless as jme3 changes line ordering, so all extensions are tried to be loaded
- 307 #ifdef GL_ES
- 308 #else
- 309 #endif
- 310
- 311 #define IVEC2 ivec2
- 312 #ifdef HARDWARE_SHADOWS
- 313 #define SHADOWMAP sampler2DShadow
- 314 #define SHADOWCOMPAREOFFSET(tex,coord,offset) textureProjOffset(tex, coord, offset)
- 315 #define SHADOWCOMPARE(tex,coord) textureProj(tex, coord)
- 316 #if defined GL_ES && __VERSION__ <= 300
- 317 #define SHADOWGATHER(tex,coord) step(coord.z, textureGather(tex, coord.xy))
- 318 #else
- 319 #define SHADOWGATHER(tex,coord) textureGather(tex, coord.xy, coord.z)
- 320 #endif
- 321 #else
- 322 #define SHADOWMAP sampler2D
- 323 #define SHADOWCOMPAREOFFSET(tex,coord,offset) step(coord.z, textureProjOffset(tex, coord, offset).r)
- 324 #define SHADOWCOMPARE(tex,coord) step(coord.z, textureProj(tex, coord).r)
- 325 #define SHADOWGATHER(tex,coord) step(coord.z, textureGather(tex, coord.xy))
- 326 #endif
- 327
- 328 #if FILTER_MODE == 10
- 329 #define GETSHADOW Shadow_Nearest
- 330 #define KERNEL 1.0
- 331 #elif FILTER_MODE == 1
- 332 #ifdef HARDWARE_SHADOWS
- 333 #define GETSHADOW Shadow_Nearest
- 334 #else
- 335 #define GETSHADOW Shadow_DoBilinear_2x2
- 336 #endif
- 337 #define KERNEL 1.0
- 338 #endif
- 339 #else
- 340 #define IVEC2 vec2
- 341 #if defined GL_ES
- 342 #define SHADOWMAP sampler2D
- 343 #define SHADOWCOMPARE(tex,coord) step(coord.z, texture2DProj(tex, coord).r)
- 344 #elif defined HARDWARE_SHADOWS
- 345 #define SHADOWMAP sampler2DShadow
- 346 #define SHADOWCOMPARE(tex,coord) shadow2DProj(tex, coord).r
- 347 #else
- 348 #define SHADOWMAP sampler2D
- 349 #define SHADOWCOMPARE(tex,coord) step(coord.z, texture2DProj(tex, coord).r)
- 350 #endif
- 351
- 352 #if FILTER_MODE == 10
- 353 #define GETSHADOW Shadow_DoShadowCompare
- 354 #define KERNEL 1.0
- 355 #elif FILTER_MODE == 1
- 356 #ifdef HARDWARE_SHADOWS
- 357 #define GETSHADOW Shadow_DoShadowCompare
- 358 #else
- 359 #define GETSHADOW Shadow_DoBilinear_2x2
- 360 #endif
- 361 #define KERNEL 1.0
- 362 #endif
- 363
- 364
- 365 #endif
- 366
- 367 #if (FILTER_MODE == 2)
- 368 #define GETSHADOW Shadow_DoDither_2x2
- 369 #define KERNEL 1.0
- 370 #elif FILTER_MODE == 3
- 371 #define GETSHADOW Shadow_DoPCF
- 372 #define KERNEL 4.0
- 373 #elif FILTER_MODE == 4
- 374 #define GETSHADOW Shadow_DoPCFPoisson
- 375 #define KERNEL 4.0
- 376 #elif FILTER_MODE == 5
- 377 #define GETSHADOW Shadow_DoPCF
- 378 #define KERNEL 8.0
- 379 #endif
- 380
- 381 uniform SHADOWMAP m_ShadowMap0;
- 382 uniform SHADOWMAP m_ShadowMap1;
- 383 uniform SHADOWMAP m_ShadowMap2;
- 384 uniform SHADOWMAP m_ShadowMap3;
- 385 #ifdef POINTLIGHT
- 386 uniform SHADOWMAP m_ShadowMap4;
- 387 uniform SHADOWMAP m_ShadowMap5;
- 388 #endif
- 389
- 390 #ifdef PSSM
- 391 uniform vec4 m_Splits;
- 392 #endif
- 393
- 394 uniform float m_ShadowIntensity;
- 395
- 396 const vec2 pixSize2 = vec2(1.0 / SHADOWMAP_SIZE);
- 397 float shadowBorderScale = 1.0;
- 398
- 399 float Shadow_DoShadowCompare(in SHADOWMAP tex,in vec4 projCoord){
- 400 return SHADOWCOMPARE(tex, projCoord);
- 401 }
- 402
- 403 float Shadow_BorderCheck(in vec2 coord){
- 404 #ifdef GL_ES
- 405 return 0.0;
- 406 #else
- 407 // Fastest, "hack" method (uses 4-5 instructions)
- 408 vec4 t = vec4(coord.xy, 0.0, 1.0);
- 409 t = step(t.wwxy, t.xyzz);
- 410 return dot(t,t);
- 411 #endif
- 412 }
- 413
- 414 float Shadow_Nearest(in SHADOWMAP tex,in vec4 projCoord){
- 415 float border = Shadow_BorderCheck(projCoord.xy);
- 416 if (border > 0.0){
- 417 return 1.0;
- 418 }
- 419 return SHADOWCOMPARE(tex, projCoord);
- 420 }
- 421
- 422 float Shadow_DoShadowCompareOffset(in SHADOWMAP tex,in vec4 projCoord,in vec2 offset){
- 423 vec4 coord = vec4(projCoord.xy + offset.xy * pixSize2 * shadowBorderScale, projCoord.zw);
- 424 return SHADOWCOMPARE(tex, coord);
- 425 }
- 426
- 427
- 428 float Shadow_DoDither_2x2(in SHADOWMAP tex, in vec4 projCoord){
- 429 float border = Shadow_BorderCheck(projCoord.xy);
- 430 if (border > 0.0)
- 431 return 1.0;
- 432
- 433 float shadow = 0.0;
- 434 //IVEC2 o = IVEC2(mod(floor(gl_FragCoord.xy), 2.0));
- 435 vec2 o = vec2(IVEC2(mod(floor(gl_FragCoord.xy), 2.0))); //Strict type checking in GLSL ES
- 436 shadow += Shadow_DoShadowCompareOffset(tex, projCoord, (vec2(-1.5, 1.5)+o));
- 437 shadow += Shadow_DoShadowCompareOffset(tex, projCoord, (vec2( 0.5, 1.5)+o));
- 438 shadow += Shadow_DoShadowCompareOffset(tex, projCoord, (vec2(-1.5, -0.5)+o));
- 439 shadow += Shadow_DoShadowCompareOffset(tex, projCoord, (vec2( 0.5, -0.5)+o));
- 440 shadow *= 0.25;
- 441 return shadow;
- 442 }
- 443
- 444 float Shadow_DoBilinear_2x2(in SHADOWMAP tex, in vec4 projCoord){
- 445 float border = Shadow_BorderCheck(projCoord.xy);
- 446 if (border > 0.0){
- 447 return 1.0;
- 448 }
- 449
- 450 vec4 gather = vec4(0.0);
- 451 #if __VERSION__ >= 130
- 452 #if defined GL_ARB_gpu_shader5 || defined GL_OES_gpu_shader5
- 453 vec4 coord = vec4(projCoord.xyz / projCoord.www,0.0);
- 454 gather = SHADOWGATHER(tex, coord);
- 455 #else
- 456 gather.x = SHADOWCOMPAREOFFSET(tex, projCoord, ivec2(0, 1));
- 457 gather.y = SHADOWCOMPAREOFFSET(tex, projCoord, ivec2(1, 1));
- 458 gather.z = SHADOWCOMPAREOFFSET(tex, projCoord, ivec2(1, 0));
- 459 gather.w = SHADOWCOMPAREOFFSET(tex, projCoord, ivec2(0, 0));
- 460 #endif
- 461 #else
- 462 gather.x = Shadow_DoShadowCompareOffset(tex, projCoord, vec2(0.0, 0.0));
- 463 gather.y = Shadow_DoShadowCompareOffset(tex, projCoord, vec2(1.0, 0.0));
- 464 gather.z = Shadow_DoShadowCompareOffset(tex, projCoord, vec2(0.0, 1.0));
- 465 gather.w = Shadow_DoShadowCompareOffset(tex, projCoord, vec2(1.0, 1.0));
- 466 #endif
- 467
- 468 vec2 f = fract( projCoord.xy * SHADOWMAP_SIZE );
- 469 vec2 mx = mix( gather.wx, gather.zy, f.x );
- 470 return mix( mx.x, mx.y, f.y );
- 471 }
- 472
- 473 float Shadow_DoPCF(in SHADOWMAP tex,in vec4 projCoord){
- 474
- 475 float shadow = 0.0;
- 476 float border = Shadow_BorderCheck(projCoord.xy);
- 477 if (border > 0.0)
- 478 return 1.0;
- 479
- 480 const float bound = (KERNEL * 0.5 - 0.5 ) * PCFEDGE;
- 481 for (float y = -bound; y <= bound; y += PCFEDGE){
- 482 for (float x = -bound; x <= bound; x += PCFEDGE){
- 483 #if __VERSION__ < 130
- 484 shadow += clamp(Shadow_DoShadowCompareOffset(tex,projCoord,vec2(x,y)) + border, 0.0, 1.0);
- 485 #else
- 486 shadow += Shadow_DoShadowCompareOffset(tex, projCoord, vec2(x,y));
- 487 #endif
- 488 }
- 489 }
- 490
- 491 shadow = shadow / (KERNEL * KERNEL);
- 492 return shadow;
- 493 }
- 494
- 495 //12 tap poisson disk
- 496 const vec2 poissonDisk0 = vec2(-0.1711046, -0.425016);
- 497 const vec2 poissonDisk1 = vec2(-0.7829809, 0.2162201);
- 498 const vec2 poissonDisk2 = vec2(-0.2380269, -0.8835521);
- 499 const vec2 poissonDisk3 = vec2(0.4198045, 0.1687819);
- 500 const vec2 poissonDisk4 = vec2(-0.684418, -0.3186957);
- 501 const vec2 poissonDisk5 = vec2(0.6026866, -0.2587841);
- 502 const vec2 poissonDisk6 = vec2(-0.2412762, 0.3913516);
- 503 const vec2 poissonDisk7 = vec2(0.4720655, -0.7664126);
- 504 const vec2 poissonDisk8 = vec2(0.9571564, 0.2680693);
- 505 const vec2 poissonDisk9 = vec2(-0.5238616, 0.802707);
- 506 const vec2 poissonDisk10 = vec2(0.5653144, 0.60262);
- 507 const vec2 poissonDisk11 = vec2(0.0123658, 0.8627419);
- 508
- 509
- 510 float Shadow_DoPCFPoisson(in SHADOWMAP tex, in vec4 projCoord){
- 511 float shadow = 0.0;
- 512 float border = Shadow_BorderCheck(projCoord.xy);
- 513 if (border > 0.0){
- 514 return 1.0;
- 515 }
- 516
- 517 vec2 texelSize = pixSize2 * 4.0 * PCFEDGE * shadowBorderScale;
- 518
- 519 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk0 * texelSize, projCoord.zw));
- 520 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk1 * texelSize, projCoord.zw));
- 521 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk2 * texelSize, projCoord.zw));
- 522 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk3 * texelSize, projCoord.zw));
- 523 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk4 * texelSize, projCoord.zw));
- 524 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk5 * texelSize, projCoord.zw));
- 525 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk6 * texelSize, projCoord.zw));
- 526 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk7 * texelSize, projCoord.zw));
- 527 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk8 * texelSize, projCoord.zw));
- 528 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk9 * texelSize, projCoord.zw));
- 529 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk10 * texelSize, projCoord.zw));
- 530 shadow += SHADOWCOMPARE(tex, vec4(projCoord.xy + poissonDisk11 * texelSize, projCoord.zw));
- 531
- 532 //this is divided by 12
- 533 return shadow * 0.08333333333;
- 534 }
- 535
- 536 #ifdef POINTLIGHT
- 537 float getPointLightShadows(in vec4 worldPos,in vec3 lightPos,
- 538 in SHADOWMAP shadowMap0,in SHADOWMAP shadowMap1,in SHADOWMAP shadowMap2,in SHADOWMAP shadowMap3,in SHADOWMAP shadowMap4,in SHADOWMAP shadowMap5,
- 539 in vec4 projCoord0,in vec4 projCoord1,in vec4 projCoord2,in vec4 projCoord3,in vec4 projCoord4,in vec4 projCoord5){
- 540 float shadow = 1.0;
- 541 vec3 vect = worldPos.xyz - lightPos;
- 542 vec3 absv= abs(vect);
- 543 float maxComp = max(absv.x,max(absv.y,absv.z));
- 544 if(maxComp == absv.y){
- 545 if(vect.y < 0.0){
- 546 shadow = GETSHADOW(shadowMap0, projCoord0 / projCoord0.w);
- 547 }else{
- 548 shadow = GETSHADOW(shadowMap1, projCoord1 / projCoord1.w);
- 549 }
- 550 }else if(maxComp == absv.z){
- 551 if(vect.z < 0.0){
- 552 shadow = GETSHADOW(shadowMap2, projCoord2 / projCoord2.w);
- 553 }else{
- 554 shadow = GETSHADOW(shadowMap3, projCoord3 / projCoord3.w);
- 555 }
- 556 }else if(maxComp == absv.x){
- 557 if(vect.x < 0.0){
- 558 shadow = GETSHADOW(shadowMap4, projCoord4 / projCoord4.w);
- 559 }else{
- 560 shadow = GETSHADOW(shadowMap5, projCoord5 / projCoord5.w);
- 561 }
- 562 }
- 563 return shadow;
- 564 }
- 565 #else
- 566 #ifdef PSSM
- 567 float getDirectionalLightShadows(in vec4 splits,in float shadowPosition,
- 568 in SHADOWMAP shadowMap0,in SHADOWMAP shadowMap1,in SHADOWMAP shadowMap2,in SHADOWMAP shadowMap3,
- 569 in vec4 projCoord0,in vec4 projCoord1,in vec4 projCoord2,in vec4 projCoord3){
- 570 float shadow = 1.0;
- 571 if(shadowPosition < splits.x){
- 572 shadow = GETSHADOW(shadowMap0, projCoord0 );
- 573 }else if( shadowPosition < splits.y){
- 574 shadowBorderScale = 0.5;
- 575 shadow = GETSHADOW(shadowMap1, projCoord1);
- 576 }else if( shadowPosition < splits.z){
- 577 shadowBorderScale = 0.25;
- 578 shadow = GETSHADOW(shadowMap2, projCoord2);
- 579 }else if( shadowPosition < splits.w){
- 580 shadowBorderScale = 0.125;
- 581 shadow = GETSHADOW(shadowMap3, projCoord3);
- 582 }
- 583 return shadow;
- 584 }
- 585 #else
- 586 float getSpotLightShadows(in SHADOWMAP shadowMap,in vec4 projCoord){
- 587 float shadow = 1.0;
- 588 projCoord /= projCoord.w;
- 589 shadow = GETSHADOW(shadowMap,projCoord);
- 590
- 591 //a small falloff to make the shadow blend nicely into the not lighten
- 592 //we translate the texture coordinate value to a -1,1 range so the length
- 593 //of the texture coordinate vector is actually the radius of the lighten area on the ground
- 594 projCoord = projCoord * 2.0 - 1.0;
- 595 float fallOff = ( length(projCoord.xy) - 0.9 ) / 0.1;
- 596 return mix(shadow,1.0,clamp(fallOff,0.0,1.0));
- 597 }
- 598 #endif
- 599 #endif
- 600 // -- end import Common/ShaderLib/Shadows.glsllib --
- 601
- 602 uniform COLORTEXTURE m_Texture;
- 603 uniform DEPTHTEXTURE m_DepthTexture;
- 604 uniform mat4 m_ViewProjectionMatrixInverse;
- 605 uniform vec4 m_ViewProjectionMatrixRow2;
- 606
- 607 varying vec2 texCoord;
- 608
- 609 const mat4 biasMat = mat4(0.5, 0.0, 0.0, 0.0,
- 610 0.0, 0.5, 0.0, 0.0,
- 611 0.0, 0.0, 0.5, 0.0,
- 612 0.5, 0.5, 0.5, 1.0);
- 613
- 614 uniform mat4 m_LightViewProjectionMatrix0;
- 615 uniform mat4 m_LightViewProjectionMatrix1;
- 616 uniform mat4 m_LightViewProjectionMatrix2;
- 617 uniform mat4 m_LightViewProjectionMatrix3;
- 618
- 619 uniform vec2 g_ResolutionInverse;
- 620
- 621 #ifdef POINTLIGHT
- 622 uniform vec3 m_LightPos;
- 623 uniform mat4 m_LightViewProjectionMatrix4;
- 624 uniform mat4 m_LightViewProjectionMatrix5;
- 625 #else
- 626 uniform vec3 m_LightDir;
- 627 #ifndef PSSM
- 628 uniform vec3 m_LightPos;
- 629 #endif
- 630 #endif
- 631
- 632 #ifdef FADE
- 633 uniform vec2 m_FadeInfo;
- 634 #endif
- 635
- 636 vec3 getPosition(in float depth, in vec2 uv){
- 637 vec4 pos = vec4(uv, depth, 1.0) * 2.0 - 1.0;
- 638 pos = m_ViewProjectionMatrixInverse * pos;
- 639 return pos.xyz / pos.w;
- 640 }
- 641
- 642 #ifndef BACKFACE_SHADOWS
- 643 vec3 approximateNormal(in float depth,in vec4 worldPos,in vec2 texCoord, in int numSample){
- 644 float step = g_ResolutionInverse.x ;
- 645 float stepy = g_ResolutionInverse.y ;
- 646 float depth1 = fetchTextureSample(m_DepthTexture,texCoord + vec2(-step,stepy),numSample).r;
- 647 float depth2 = fetchTextureSample(m_DepthTexture,texCoord + vec2(step,stepy),numSample).r;
- 648 vec3 v1, v2;
- 649 vec4 worldPos1 = vec4(getPosition(depth1,texCoord + vec2(-step,stepy)),1.0);
- 650 vec4 worldPos2 = vec4(getPosition(depth2,texCoord + vec2(step,stepy)),1.0);
- 651
- 652 v1 = normalize((worldPos1 - worldPos)).xyz;
- 653 v2 = normalize((worldPos2 - worldPos)).xyz;
- 654 return normalize(cross(v2, v1));
- 655
- 656 }
- 657 #endif
- 658
- 659 vec4 main_multiSample(in int numSample){
- 660 float depth = fetchTextureSample(m_DepthTexture,texCoord,numSample).r;//getDepth(m_DepthTexture,texCoord).r;
- 661 vec4 color = fetchTextureSample(m_Texture,texCoord,numSample);
- 662
- 663 //Discard shadow computation on the sky
- 664 if(depth == 1.0){
- 665 return color;
- 666 }
- 667
- 668 // get the vertex in world space
- 669 vec4 worldPos = vec4(getPosition(depth,texCoord),1.0);
- 670
- 671
- 672 vec3 lightDir;
- 673 #ifdef PSSM
- 674 lightDir = m_LightDir;
- 675 #else
- 676 lightDir = worldPos.xyz - m_LightPos;
- 677 #endif
- 678
- 679 #ifndef BACKFACE_SHADOWS
- 680 vec3 normal = approximateNormal(depth, worldPos, texCoord, numSample);
- 681 float ndotl = dot(normal, lightDir);
- 682 if(ndotl > 0.0){
- 683 return color;
- 684 }
- 685 #endif
- 686
- 687 #if (!defined(POINTLIGHT) && !defined(PSSM))
- 688 if( dot(m_LightDir,lightDir)<0){
- 689 return color;
- 690 }
- 691 #endif
- 692
- 693 // populate the light view matrices array and convert vertex to light viewProj space
- 694 vec4 projCoord0 = biasMat * m_LightViewProjectionMatrix0 * worldPos;
- 695 vec4 projCoord1 = biasMat * m_LightViewProjectionMatrix1 * worldPos;
- 696 vec4 projCoord2 = biasMat * m_LightViewProjectionMatrix2 * worldPos;
- 697 vec4 projCoord3 = biasMat * m_LightViewProjectionMatrix3 * worldPos;
- 698 #ifdef POINTLIGHT
- 699 vec4 projCoord4 = biasMat * m_LightViewProjectionMatrix4 * worldPos;
- 700 vec4 projCoord5 = biasMat * m_LightViewProjectionMatrix5 * worldPos;
- 701 #endif
- 702
- 703 float shadow = 1.0;
- 704
- 705 #if defined(PSSM) || defined(FADE)
- 706 float shadowPosition = m_ViewProjectionMatrixRow2.x * worldPos.x + m_ViewProjectionMatrixRow2.y * worldPos.y + m_ViewProjectionMatrixRow2.z * worldPos.z + m_ViewProjectionMatrixRow2.w;
- 707 #endif
- 708
- 709 #ifdef POINTLIGHT
- 710 shadow = getPointLightShadows(worldPos, m_LightPos,
- 711 m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,m_ShadowMap4,m_ShadowMap5,
- 712 projCoord0, projCoord1, projCoord2, projCoord3, projCoord4, projCoord5);
- 713 #else
- 714 #ifdef PSSM
- 715 shadow = getDirectionalLightShadows(m_Splits, shadowPosition,
- 716 m_ShadowMap0,m_ShadowMap1,m_ShadowMap2,m_ShadowMap3,
- 717 projCoord0, projCoord1, projCoord2, projCoord3);
- 718 #else
- 719 //spotlight
- 720 shadow = getSpotLightShadows(m_ShadowMap0,projCoord0);
- 721 #endif
- 722 #endif
- 723
- 724
- 725 #ifdef FADE
- 726 shadow = clamp(max(0.0,mix(shadow, 1.0 ,(shadowPosition - m_FadeInfo.x) * m_FadeInfo.y)),0.0,1.0);
- 727 #endif
- 728
- 729 shadow= shadow * m_ShadowIntensity + (1.0 - m_ShadowIntensity);
- 730 return color * vec4(shadow, shadow, shadow, 1.0);
- 731 }
- 732
- 733 void main() {
- 734
- 735 #ifdef RESOLVE_MS
- 736 vec4 color = vec4(0.0);
- 737 for (int i = 0; i < m_NumSamples; i++){
- 738 color += main_multiSample(i);
- 739 }
- 740 gl_FragColor = color / m_NumSamples;
- 741 #else
- 742 gl_FragColor = main_multiSample(0);
- 743 #endif
- 744 }
- Mar 07, 2024 10:31:08 PM com.jme3.app.LegacyApplication handleError
- SEVERE: Uncaught exception thrown in Thread[jME3 Main,6,main]
- com.jme3.renderer.RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL150]
- Fragment shader failed to compile with the following errors:
- WARNING: 0:11: warning(#62) enable/warn/disable extension is not found. Extension "GL_OES_gpu_shader5" is not supported
- ERROR: 0:17: error(#228) Type should be float or int
- ERROR: 0:18: error(#228) Type should be float or int
- ERROR: 0:19: error(#228) Type should be float or int
- ERROR: 0:20: error(#228) Type should be float or int
- ERROR: 0:21: error(#228) Type should be float or int
- ERROR: error(#273) 5 compilation errors. No code generated
- at com.jme3.renderer.opengl.GLRenderer.updateShaderSourceData(GLRenderer.java:1658)
- at com.jme3.renderer.opengl.GLRenderer.updateShaderData(GLRenderer.java:1685)
- at com.jme3.renderer.opengl.GLRenderer.setShader(GLRenderer.java:1750)
- at com.jme3.material.logic.DefaultTechniqueDefLogic.render(DefaultTechniqueDefLogic.java:97)
- at com.jme3.material.Technique.render(Technique.java:168)
- at com.jme3.material.Material.render(Material.java:1090)
- at com.jme3.renderer.RenderManager.renderGeometry(RenderManager.java:695)
- at com.jme3.post.FilterPostProcessor.renderProcessing(FilterPostProcessor.java:235)
- at com.jme3.post.FilterPostProcessor.renderFilterChain(FilterPostProcessor.java:321)
- at com.jme3.post.FilterPostProcessor.postFrame(FilterPostProcessor.java:342)
- at com.jme3.renderer.RenderManager.renderViewPort(RenderManager.java:1238)
- at com.jme3.renderer.RenderManager.render(RenderManager.java:1292)
- at com.jme3.app.SimpleApplication.update(SimpleApplication.java:283)
- at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:163)
- at com.jme3.system.lwjgl.LwjglCanvas.runLoop(LwjglCanvas.java:231)
- at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:245)
- at java.base/java.lang.Thread.run(Thread.java:833)
- Mar 07, 2024 10:31:08 PM com.jme3.system.JmeSystemDelegate lambda$new$0
- WARNING: JmeDialogsFactory implementation not found.
- Uncaught exception thrown in Thread[jME3 Main,6,main]
- RendererException: compile error in: ShaderSource[name=Common/MatDefs/Shadow/PostShadowFilter15.frag, defines, type=Fragment, language=GLSL150]
- Fragment shader failed to compile with the following errors:
- WARNING: 0:11: warning(#62) enable/warn/disable extension is not found. Extension "GL_OES_gpu_shader5" is not supported
- ERROR: 0:17: error(#228) Type should be float or int
- ERROR: 0:18: error(#228) Type should be float or int
- ERROR: 0:19: error(#228) Type should be float or int
- ERROR: 0:20: error(#228) Type should be float or int
- ERROR: 0:21: error(#228) Type should be float or int
- ERROR: error(#273) 5 compilation errors. No code generated
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement