View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
---|---|---|---|---|---|---|---|---|---|
0004643 | Spring engine | General | public | 2015-01-04 15:49 | 2015-01-04 17:24 | ||||
Reporter | abma | ||||||||
Assigned To | abma | ||||||||
Priority | normal | Severity | minor | Reproducibility | have not tried | ||||
Status | resolved | Resolution | fixed | ||||||
Product Version | 98.0.1+git | ||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0004643: Shader compile error "cannot construct `mat3' from a matrix in GLSL 1.10 (GLSL 1.20 or GLSL ES 1.00 required)" | ||||||||
Description | [Shader] Warning: [GLSL-SO::Compile] shader-object name: unknown, compile-log: 0:86(16): error: cannot construct `mat3' from a matrix in GLSL 1.10 (GLSL 1.20 or GLSL ES 1.00 required) 0:86(16): error: operands to arithmetic operators must be numeric [f=0000300] [Shader] Warning: // SHADER VERSION // SHADER FLAGS #define DISTANCE_NEAR #define HAVE_SHADOWS // SHADER SOURCE #line 1 uniform vec2 mapSizePO2; // (1.0 / pwr2map{x,z} * SQUARE_SIZE) uniform vec2 mapSize; // (1.0 / map{x,z} * SQUARE_SIZE) uniform mat4 shadowMatrix; uniform vec4 shadowParams; uniform vec3 camPos; uniform vec3 camUp; uniform vec3 camRight; uniform float frame; uniform vec3 windSpeed; uniform vec3 sunDir; uniform vec3 ambientLightColor; uniform vec3 diffuseLightColor; varying vec3 normal; varying vec4 shadingTexCoords; varying vec2 bladeTexCoords; varying vec3 ambientDiffuseLightTerm; #if defined(HAVE_SHADOWS) || defined(SHADOW_GEN) varying vec4 shadowTexCoords; #endif const float PI = 3.14159265358979323846264; ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // Crytek - foliage animation // src: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch16.html // // This bends the entire plant in the direction of the wind. // vPos: The world position of the plant *relative* to the base of the plant. vec3 ApplyMainBending(in vec3 vPos, in vec2 vWind, in float fBendScale) { float fLength = length(vPos); float fBF = vPos.y * fBendScale + 1.0; fBF *= fBF; fBF = fBF * fBF - fBF; vPos.xz += vWind.xy * fBF; return normalize(vPos) * fLength; } vec2 SmoothCurve( vec2 x ) { return x * x * (3.0 - 2.0 * x); } vec2 TriangleWave( vec2 x ) { return abs( fract( x + 0.5 ) * 1.99 - 1.0 ); } vec2 SmoothTriangleWave( vec2 x ) { // similar to sine wave, but faster return SmoothCurve( TriangleWave( x ) ); } const vec2 V_FREQ = vec2(1.975, 0.793); // This provides "chaotic" motion for leaves and branches (the entire plant, really) void ApplyDetailBending(inout vec3 vPos, vec3 vNormal, float fDetailPhase, float fTime, float fSpeed, float fDetailAmp) { float vWavesIn = fTime + fDetailPhase; vec2 vWaves = (fract( vec2(vWavesIn) * V_FREQ ) * 2.0 - 1.0 ) * fSpeed; vWaves = SmoothTriangleWave( vWaves ); vPos.xyz += vNormal.xyz * vWaves.xxy * fDetailAmp; } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// void main() { vec2 texOffset = vec2(0.); gl_FrontColor = gl_Color; #ifndef DISTANCE_FAR // mesh grass normal = gl_NormalMatrix * gl_Normal; vec4 worldPos = gl_ModelViewMatrix * gl_Vertex; // anim vec3 objPos = mat3(gl_ModelViewMatrix) * gl_Vertex.xyz; worldPos.xyz += ApplyMainBending(objPos, windSpeed.xz, gl_MultiTexCoord0.s * 0.004 + 0.007) - objPos; ApplyDetailBending(worldPos.xyz, normal, gl_MultiTexCoord0.s, frame / 30.0, 0.3, gl_MultiTexCoord0.t * 0.4); // compute ambient & diffuse lighting per-vertex, specular is per-pixel float fNdotL = dot(normal, sunDir); float diffuseTerm = fNdotL * 0.4 + 0.6; // front surface //TODO make constants customizable? diffuseTerm = max(diffuseTerm, ((-fNdotL) * 0.3 + 0.7) * 0.8); // back surface //TODO make constants customizable? ambientDiffuseLightTerm = ambientLightColor + diffuseTerm * diffuseLightColor; #else // billboards gl_FrontColor.a *= gl_Normal.z; // alpha blend far turfs vec4 worldPos = /* gl_ModelViewMatrix * */ gl_Vertex; // MVM is empty in far draw pass // get the camera angle on the billboard and select the corresponding sprite float cosCamAngle = normalize(camPos.xyz - worldPos.xyz).y; float ang = acos(-cosCamAngle); texOffset.s = clamp(floor((ang + PI / 16.0 - PI / 2.0) / PI * 30.0), 0.0, 15.0) / 16.0; // billboard size vec2 billboardSize = gl_Normal.xy; // cut of lower half in horizontal views (the fartexture is empty in lower 50% in horizontal view!) billboardSize.y = max(billboardSize.y, billboardSize.y * cosCamAngle); // span the billboard worldPos.xyz += camRight * billboardSize.x; worldPos.xyz += camUp * billboardSize.y; // adjust texcoord for cut of billboard texOffset.t = max((0.5 * cosCamAngle - 0.5), -gl_MultiTexCoord0.t); // anim float seed = fract(abs(dot(gl_Vertex.xyz, vec3(1.0)))); vec3 objPos = (worldPos.xyz - gl_Vertex.xyz); worldPos.xyz += ApplyMainBending(objPos, windSpeed.xz, seed * 0.006 + 0.01) - objPos; ApplyDetailBending(worldPos.xyz, vec3(1., 0., 1.), seed, frame / 30.0, 0.3, 0.5 * max(1.0 - gl_MultiTexCoord0.t, cosCamAngle)); // move up when looking down (to fix clipping issues) worldPos.y += 5.0 * cosCamAngle; // compute ambient & diffuse lighting per-vertex ambientDiffuseLightTerm = ambientLightColor + diffuseLightColor; #endif #if defined(HAVE_SHADOWS) || defined(SHADOW_GEN) vec4 vertexShadowPos = shadowMatrix * worldPos; vertexShadowPos.st += shadowParams.xy; shadowTexCoords = vertexShadowPos; #endif #ifdef SHADOW_GEN { bladeTexCoords = gl_MultiTexCoord0.st + texOffset; gl_Position = gl_ProjectionMatrix * vertexShadowPos; return; } #endif shadingTexCoords = worldPos.xzxz * vec4(mapSizePO2, mapSize); bladeTexCoords = gl_MultiTexCoord0.st + texOffset; gl_Position = gl_ProjectionMatrix * worldPos; gl_FogFragCoord = distance(camPos, worldPos.xyz); gl_FogFragCoord = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale; gl_FogFragCoord = clamp(gl_FogFragCoord, 0.0, 1.0); } [f=0000300] [CrashHandler] Error: Floating point exception (SIGFPE) in spring 98.0.1-238-g05ddf80 release (Debug) [f=0000300] [CrashHandler] Error: Halted Stacktrace for Spring 98.0.1-238-g05ddf80 release (Debug) using libunwind: [f=0000300] [CrashHandler] Error: [00] /home/abma/dev/spring/develop/rts/System/Platform/Linux/CrashHandler.cpp:853 CrashHandler::HaltedStacktrace(std::string const&, siginfo_t*, ucontext*) [f=0000300] [CrashHandler] Error: [01] /home/abma/dev/spring/develop/rts/System/Platform/Linux/CrashHandler.cpp:959 CrashHandler::HandleSignal(int, siginfo_t*, void*) [f=0000300] [CrashHandler] Error: [02] ??:? __restore_rt [f=0000300] [CrashHandler] Error: [03] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [04] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [05] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [06] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [07] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [08] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [09] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [10] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [11] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [12] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [13] ??:? radeon_drm_winsys_create [f=0000300] [CrashHandler] Error: [14] ??:? __driDriverGetExtensions_vmwgfx [f=0000300] [CrashHandler] Error: [15] ??:? __driDriverGetExtensions_vmwgfx [f=0000300] [CrashHandler] Error: [16] ??:? __driDriverGetExtensions_vmwgfx [f=0000300] [CrashHandler] Error: [17] ??:? __driDriverGetExtensions_vmwgfx [f=0000300] [CrashHandler] Error: [18] ??:? __driDriverGetExtensions_vmwgfx [f=0000300] [CrashHandler] Error: [19] /home/abma/dev/spring/develop/rts/Rendering/Env/GrassDrawer.cpp:396 CGrassDrawer::DrawNear(std::vector<CGrassDrawer::InviewNearGrass, std::allocator<CGrassDrawer: [...] [f=0000300] [CrashHandler] Error: [20] /home/abma/dev/spring/develop/rts/Rendering/Env/GrassDrawer.cpp:539 CGrassDrawer::Draw() [f=0000300] [CrashHandler] Error: [21] /home/abma/dev/spring/develop/rts/Rendering/WorldDrawer.cpp:137 CWorldDrawer::Draw() [f=0000300] [CrashHandler] Error: [22] /home/abma/dev/spring/develop/rts/Game/Game.cpp:1324 CGame::Draw() [f=0000300] [CrashHandler] Error: [23] /home/abma/dev/spring/develop/rts/System/SpringApp.cpp:845 SpringApp::Update() [f=0000300] [CrashHandler] Error: [24] /home/abma/dev/spring/develop/rts/System/SpringApp.cpp:873 SpringApp::Run() [f=0000300] [CrashHandler] Error: [25] /home/abma/dev/spring/develop/rts/System/Main.cpp:48 Run(int, char**) [f=0000300] [CrashHandler] Error: [26] /home/abma/dev/spring/develop/rts/System/Main.cpp:108 main [f=0000300] [CrashHandler] Error: [27] /build/buildd/glibc-2.19/csu/libc-start.c:321 __libc_start_main [f=0000300] [CrashHandler] Error: [28] ??:? _start [f=0000300] Error: [ErrorMessageBox][1] msg="Spring has crashed: Floating point exception (SIGFPE). | ||||||||
Tags | No tags attached. | ||||||||
Checked infolog.txt for Errors | |||||||||
Attached Files |
|
Notes | |
abma (administrator) 2015-01-04 15:50 |
http://blenderartists.org/forum/archive/index.php/t-292170.html ? |
abma (administrator) 2015-01-04 15:53 |
to reproduce, i have just to zoom in close to the map ground. |
abma (administrator) 2015-01-04 15:58 |
this fixes it for me: diff --git a/cont/base/springcontent/shaders/GLSL/GrassVertProg.glsl b/cont/base/springcontent/shaders/GLSL/GrassVertProg.glsl index 35fdadc..687fa20 100644 --- a/cont/base/springcontent/shaders/GLSL/GrassVertProg.glsl +++ b/cont/base/springcontent/shaders/GLSL/GrassVertProg.glsl @@ -67,6 +67,26 @@ void ApplyDetailBending(inout vec3 vPos, vec3 vNormal, float fDetailPhase, float vPos.xyz += vNormal.xyz * vWaves.xxy * fDetailAmp; } +mat3 m3( mat4 m ) +{ + mat3 result; + + result[0][0] = m[0][0]; + result[0][1] = m[0][1]; + result[0][2] = m[0][2]; + + + result[1][0] = m[1][0]; + result[1][1] = m[1][1]; + result[1][2] = m[1][2]; + + result[2][0] = m[2][0]; + result[2][1] = m[2][1]; + result[2][2] = m[2][2]; + + return result; +} + ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// @@ -82,7 +102,7 @@ void main() { vec4 worldPos = gl_ModelViewMatrix * gl_Vertex; // anim - vec3 objPos = mat3(gl_ModelViewMatrix) * gl_Vertex.xyz; + vec3 objPos = m3(gl_ModelViewMatrix) * gl_Vertex.xyz; worldPos.xyz += ApplyMainBending(objPos, windSpeed.xz, gl_MultiTexCoord0.s * 0.004 + 0.007) - objPos; ApplyDetailBending(worldPos.xyz, normal, gl_MultiTexCoord0.s, is this change fine? |
Issue History | |||
Date Modified | Username | Field | Change |
---|---|---|---|
2015-01-04 15:49 | abma | New Issue | |
2015-01-04 15:50 | abma | Note Added: 0013885 | |
2015-01-04 15:52 | abma | Summary | Shader compile error resulting in SIGFPE => Shader compile error |
2015-01-04 15:53 | abma | Note Added: 0013886 | |
2015-01-04 15:58 | abma | Note Added: 0013887 | |
2015-01-04 15:59 | abma | Summary | Shader compile error => Shader compile error "cannot construct `mat3' from a matrix in GLSL 1.10 (GLSL 1.20 or GLSL ES 1.00 required)" |
2015-01-04 17:24 | abma | Changeset attached | => spring release 257ef8c3 |
2015-01-04 17:24 | abma | Assigned To | => abma |
2015-01-04 17:24 | abma | Status | new => resolved |
2015-01-04 17:24 | abma | Resolution | open => fixed |