RobertBeckebans / RBDOOM-3-BFG

Doom 3 BFG Edition source port with updated DX12 / Vulkan renderer and modern game engine features
https://www.moddb.com/mods/rbdoom-3-bfg
GNU General Public License v3.0
1.4k stars 251 forks source link

Ubuntu 14.04 x64 Mesa 10.1.0-4 IntelHD graphics 3000 new shadow mapping performance #103

Closed BielBdeLuna closed 10 years ago

BielBdeLuna commented 10 years ago

I've tested the new release on Windows 7 with an Nvidia GeForce 780 GTX, and it runs flawlessly

but on an intel HD Graphics 3000 running an Ubuntu 14.04 it's unplayable it shows black textures (although I can still see guis, "flare" textures and particle materials ) and it stops being responsive.

before the update RBDoom3BFG worked ok.

I have the following machine Intel Sandybridge Mobile with HD graphics 3000 Ubuntu 14.04 x64 Linux kernel 3.13.0-26-generic ( the current Kernel in Ubuntu ) Mesa driver 10.1.0-4ubuntu ( the current driver for Intel chipsets in Ubuntu)

I pulled the new changes via "git pull" I've complied the "master" branch

I have compiled the code with the cmake-eclipse-linux-profile.sh (un-moded, it contains "-DSDL2=OFF" )

I added the new renderprogs in the "base" directory

if I set r_useShadowMapping to 0 ( the old renderer ) it plays ok, and all the textures display correcly, but if I set the shadow mapping to true I have to quit the game via "quit" in the console because the game gets to an unplayable refresh rate ( much more than a second per frame). and I see all the errors in the image.

In renderprogs I've seen that there is a folder named "glsles-1.0" and another named "glsles-1_0" maybe this is a typo in the code?

that's what I get when using shadow mapping and start a level (alpha labs 2 ) via the "dev" option in the main menu:

biel@Biel-laptop:/usr/local/share/d3bfg$ ./RBDoom3BFG
QA Timing INIT: 000395ms
RBD3BFG 1.1400 linux-x86_86 May 10 2014 20:58:29
found interface lo - loopback
found interface wlan0 - 192.168.1.129/255.255.255.0
------ Initializing File System ------
Loaded resource file _common.resources
Loaded resource file _ordered.resources
Loaded resource file _sound_pc.resources
Loaded resource file _sound_pc_en.resources
Loaded resource file _common.resources
Loaded resource file _ordered.resources
Current search path:
/usr/local/share/d3bfg/base
/home/biel/.rbdoom3bfg/base
file system initialized.
--------------------------------------
WARNING: Unable to open resource file maps/_startup.resources
----- Initializing Decls -----
------------------------------
Couldn't open journal files
/proc/cpuinfo CPU processors: 4
/proc/cpuinfo CPU logical cores: 2
execing default.cfg
execing D3BFGConfig.cfg
couldn't exec autoexec.cfg
----- R_InitOpenGL -----
Initializing OpenGL subsystem
Using 8 color bits, 24 depth, 8 stencil display
Using GLEW 1.10.0
OpenGL Version: 3.0
OpenGL Vendor : Intel Open Source Technology Center
OpenGL GLSL   : 1.3
   maxTextureAnisotropy: 16.000000
...using GL_EXT_texture_lod_bias
X..GL_GREMEDY_string_marker not found
...using GL_EXT_framebuffer_object
...using GL_EXT_framebuffer_blit
----- Initializing Render Shaders -----
While compiling vertex program renderprogs/texture_color_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[12];
 13: 
 14: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 15: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 16: vec4 swizzleColor (vec4 c ) {return c ; }
 17: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 18: 
 19: attribute vec4 in_Position;
 20: attribute vec2 in_TexCoord;
 21: attribute vec4 in_Color;
 22: attribute vec4 in_Color2;
 23: 
 24: varying vec2 vofi_TexCoord0;
 25: varying vec4 vofi_Color;
 26: 
 27: void main() {
 28:    float w0 = in_Color2 . x ;
 29:    float w1 = in_Color2 . y ;
 30:    float w2 = in_Color2 . z ;
 31:    float w3 = in_Color2 . w ;
 32:    vec4 matX , matY , matZ ;
 33:    float joint = in_Color . x * 255.1 * 3 ;
 34:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 35:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 36:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 37:    joint = in_Color . y * 255.1 * 3 ;
 38:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 39:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 40:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 41:    joint = in_Color . z * 255.1 * 3 ;
 42:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 43:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 44:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 45:    joint = in_Color . w * 255.1 * 3 ;
 46:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 47:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 48:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 49:    vec4 modelPosition ;
 50:    modelPosition. x = dot4 ( matX , in_Position ) ;
 51:    modelPosition. y = dot4 ( matY , in_Position ) ;
 52:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 53:    modelPosition. w = 1.0 ;
 54:    gl_Position . x = dot4 ( modelPosition , _va_[3 /* rpMVPmatrixX */] ) ;
 55:    gl_Position . y = dot4 ( modelPosition , _va_[4 /* rpMVPmatrixY */] ) ;
 56:    gl_Position . z = dot4 ( modelPosition , _va_[5 /* rpMVPmatrixZ */] ) ;
 57:    gl_Position . w = dot4 ( modelPosition , _va_[6 /* rpMVPmatrixW */] ) ; if ( _va_[11 /* rpTexGen0Enabled */] . x > 0.0 ) {
 58:        vofi_TexCoord0 . x = dot4 ( modelPosition , _va_[9 /* rpTexGen0S */] ) ;
 59:        vofi_TexCoord0 . y = dot4 ( modelPosition , _va_[10 /* rpTexGen0T */] ) ;
 60:    } else {
 61:        vofi_TexCoord0 . x = dot4 ( in_TexCoord . xy , _va_[7 /* rpTextureMatrixS */] ) ;
 62:        vofi_TexCoord0 . y = dot4 ( in_TexCoord . xy , _va_[8 /* rpTextureMatrixT */] ) ;
 63:    }
 64:    vec4 vertexColor = ( swizzleColor ( in_Color ) * _va_[0 /* rpVertexColorModulate */] ) + _va_[1 /* rpVertexColorAdd */] ;
 65:    vofi_Color = vertexColor * _va_[2 /* rpColor */] ;
 66: }
-----------------
0:17(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/interactionAmbient_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[18];
 13: 
 14: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 15: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 16: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 17: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 18: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 19: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 20: vec4 swizzleColor (vec4 c ) {return c ; }
 21: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 22: 
 23: attribute vec4 in_Position;
 24: attribute vec2 in_TexCoord;
 25: attribute vec4 in_Normal;
 26: attribute vec4 in_Tangent;
 27: attribute vec4 in_Color;
 28: attribute vec4 in_Color2;
 29: 
 30: varying vec4 vofi_TexCoord1;
 31: varying vec4 vofi_TexCoord2;
 32: varying vec4 vofi_TexCoord3;
 33: varying vec4 vofi_TexCoord4;
 34: varying vec4 vofi_TexCoord5;
 35: varying vec4 vofi_TexCoord6;
 36: varying vec4 vofi_Color;
 37: 
 38: void main() {
 39:    vec4 vNormal = in_Normal * 2.0 - 1.0 ;
 40:    vec4 vTangent = in_Tangent * 2.0 - 1.0 ;
 41:    vec3 vBinormal = cross ( vNormal. xyz , vTangent. xyz ) * vTangent. w ;
 42:    float w0 = in_Color2 . x ;
 43:    float w1 = in_Color2 . y ;
 44:    float w2 = in_Color2 . z ;
 45:    float w3 = in_Color2 . w ;
 46:    vec4 matX , matY , matZ ;
 47:    float joint = in_Color . x * 255.1 * 3 ;
 48:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 49:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 50:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 51:    joint = in_Color . y * 255.1 * 3 ;
 52:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 53:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 54:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 55:    joint = in_Color . z * 255.1 * 3 ;
 56:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 57:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 58:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 59:    joint = in_Color . w * 255.1 * 3 ;
 60:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 61:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 62:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 63:    vec3 normal ;
 64:    normal. x = dot3 ( matX , vNormal ) ;
 65:    normal. y = dot3 ( matY , vNormal ) ;
 66:    normal. z = dot3 ( matZ , vNormal ) ;
 67:    normal = normalize ( normal ) ;
 68:    vec3 tangent ;
 69:    tangent. x = dot3 ( matX , vTangent ) ;
 70:    tangent. y = dot3 ( matY , vTangent ) ;
 71:    tangent. z = dot3 ( matZ , vTangent ) ;
 72:    tangent = normalize ( tangent ) ;
 73:    vec3 binormal ;
 74:    binormal. x = dot3 ( matX , vBinormal ) ;
 75:    binormal. y = dot3 ( matY , vBinormal ) ;
 76:    binormal. z = dot3 ( matZ , vBinormal ) ;
 77:    binormal = normalize ( binormal ) ;
 78:    vec4 modelPosition ;
 79:    modelPosition. x = dot4 ( matX , in_Position ) ;
 80:    modelPosition. y = dot4 ( matY , in_Position ) ;
 81:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 82:    modelPosition. w = 1.0 ;
 83:    gl_Position . x = dot4 ( modelPosition , _va_[14 /* rpMVPmatrixX */] ) ;
 84:    gl_Position . y = dot4 ( modelPosition , _va_[15 /* rpMVPmatrixY */] ) ;
 85:    gl_Position . z = dot4 ( modelPosition , _va_[16 /* rpMVPmatrixZ */] ) ;
 86:    gl_Position . w = dot4 ( modelPosition , _va_[17 /* rpMVPmatrixW */] ) ;
 87:    vec4 defaultTexCoord = vec4 ( 0.0 , 0.5 , 0.0 , 1.0 ) ;
 88:    vec4 toLight = _va_[0 /* rpLocalLightOrigin */] - modelPosition ;
 89:    vofi_TexCoord1 = defaultTexCoord ;
 90:    vofi_TexCoord1 . x = dot4 ( in_TexCoord . xy , _va_[6 /* rpBumpMatrixS */] ) ;
 91:    vofi_TexCoord1 . y = dot4 ( in_TexCoord . xy , _va_[7 /* rpBumpMatrixT */] ) ;
 92:    vofi_TexCoord2 = defaultTexCoord ;
 93:    vofi_TexCoord2 . x = dot4 ( modelPosition , _va_[5 /* rpLightFalloffS */] ) ;
 94:    vofi_TexCoord3 . x = dot4 ( modelPosition , _va_[2 /* rpLightProjectionS */] ) ;
 95:    vofi_TexCoord3 . y = dot4 ( modelPosition , _va_[3 /* rpLightProjectionT */] ) ;
 96:    vofi_TexCoord3 . z = 0.0 ;
 97:    vofi_TexCoord3 . w = dot4 ( modelPosition , _va_[4 /* rpLightProjectionQ */] ) ;
 98:    vofi_TexCoord4 = defaultTexCoord ;
 99:    vofi_TexCoord4 . x = dot4 ( in_TexCoord . xy , _va_[8 /* rpDiffuseMatrixS */] ) ;
100:    vofi_TexCoord4 . y = dot4 ( in_TexCoord . xy , _va_[9 /* rpDiffuseMatrixT */] ) ;
101:    vofi_TexCoord5 = defaultTexCoord ;
102:    vofi_TexCoord5 . x = dot4 ( in_TexCoord . xy , _va_[10 /* rpSpecularMatrixS */] ) ;
103:    vofi_TexCoord5 . y = dot4 ( in_TexCoord . xy , _va_[11 /* rpSpecularMatrixT */] ) ;
104:    toLight = normalize ( toLight ) ;
105:    vec4 toView = normalize ( _va_[1 /* rpLocalViewOrigin */] - modelPosition ) ;
106:    vec4 halfAngleVector = toLight + toView ;
107:    vofi_TexCoord6 . x = dot3 ( tangent , halfAngleVector ) ;
108:    vofi_TexCoord6 . y = dot3 ( binormal , halfAngleVector ) ;
109:    vofi_TexCoord6 . z = dot3 ( normal , halfAngleVector ) ;
110:    vofi_TexCoord6 . w = 1.0 ;
111:    vofi_Color = ( swizzleColor ( in_Color ) * _va_[12 /* rpVertexColorModulate */] ) + _va_[13 /* rpVertexColorAdd */] ;
112: }
-----------------
0:21(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling fragment program renderprogs/interactionSM.pixel
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: void clip( float v ) { if ( v < 0.0 ) { discard; } }
  7: void clip( vec2 v ) { if ( any( lessThan( v, vec2( 0.0 ) ) ) ) { discard; } }
  8: void clip( vec3 v ) { if ( any( lessThan( v, vec3( 0.0 ) ) ) ) { discard; } }
  9: void clip( vec4 v ) { if ( any( lessThan( v, vec4( 0.0 ) ) ) ) { discard; } }
 10: 
 11: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
 12: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
 13: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
 14: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 15: 
 16: vec4 tex2D( sampler2D sampler, vec2 texcoord ) { return texture2D( sampler, texcoord.xy ); }
 17: 
 18: vec4 texCUBE( samplerCube sampler, vec3 texcoord ) { return textureCube( sampler, texcoord.xyz ); }
 19: 
 20: vec4 tex2Dproj( sampler2D sampler, vec3 texcoord ) { return texture2DProj( sampler, texcoord ); }
 21: 
 22: 
 23: uniform vec4 _fa_[30];
 24: 
 25: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 26: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 27: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 28: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 29: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 30: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 31: const vec4 matrixCoCg1YtoRGB1X = vec4( 1.0, -1.0, 0.0, 1.0 );
 32: const vec4 matrixCoCg1YtoRGB1Y = vec4( 0.0, 1.0, -0.50196078, 1.0 );
 33: const vec4 matrixCoCg1YtoRGB1Z = vec4( -1.0, -1.0, 1.00392156, 1.0 );
 34: vec3 ConvertYCoCgToRGB (vec4 YCoCg ) {
 35:    vec3 rgbColor ;
 36:    YCoCg. z = ( YCoCg. z * 31.875 ) + 1.0 ;
 37:    YCoCg. z = 1.0 / YCoCg. z ;
 38:    YCoCg. xy *= YCoCg. z ;
 39:    rgbColor. x = dot4 ( YCoCg , matrixCoCg1YtoRGB1X ) ;
 40:    rgbColor. y = dot4 ( YCoCg , matrixCoCg1YtoRGB1Y ) ;
 41:    rgbColor. z = dot4 ( YCoCg , matrixCoCg1YtoRGB1Z ) ;
 42:    return rgbColor ;
 43: }
 44: vec4 idtex2Dproj (sampler2D samp , vec4 texCoords ) {return tex2Dproj ( samp , texCoords. xyw ) ; }
 45: uniform sampler2D samp0;
 46: uniform sampler2D samp1;
 47: uniform sampler2D samp2;
 48: uniform sampler2D samp3;
 49: uniform sampler2D samp4;
 50: uniform sampler2DArrayShadow samp5;
 51: uniform sampler2D samp6;
 52: 
 53: varying vec4 vofi_TexCoord0;
 54: varying vec4 vofi_TexCoord1;
 55: varying vec4 vofi_TexCoord2;
 56: varying vec4 vofi_TexCoord3;
 57: varying vec4 vofi_TexCoord4;
 58: varying vec4 vofi_TexCoord5;
 59: varying vec4 vofi_TexCoord6;
 60: varying vec4 vofi_TexCoord7;
 61: varying vec4 vofi_TexCoord8;
 62: varying vec4 vofi_TexCoord9;
 63: varying vec4 vofi_Color;
 64: 
 65: 
 66: void main() {
 67:    vec4 bumpMap = tex2D ( samp0 , vofi_TexCoord1 . xy ) ;
 68:    vec4 lightFalloff = idtex2Dproj ( samp1 , vofi_TexCoord2 ) ;
 69:    vec4 lightProj = idtex2Dproj ( samp2 , vofi_TexCoord3 ) ;
 70:    vec4 YCoCG = tex2D ( samp3 , vofi_TexCoord4 . xy ) ;
 71:    vec4 specMap = tex2D ( samp4 , vofi_TexCoord5 . xy ) ;
 72:    vec3 lightVector = normalize ( vofi_TexCoord0 . xyz ) ;
 73:    vec3 diffuseMap = ConvertYCoCgToRGB ( YCoCG ) ;
 74:    vec3 localNormal ;
 75:    localNormal. xy = bumpMap. wy - 0.5 ;
 76:    localNormal. z = sqrt ( abs ( dot ( localNormal. xy , localNormal. xy ) - 0.25 ) ) ;
 77:    localNormal = normalize ( localNormal ) ;
 78:    float halfLdotN = dot3 ( localNormal , lightVector ) * 0.5 + 0.5 ;
 79:    halfLdotN *= halfLdotN ;
 80:    float ldotN = dot3 ( localNormal , lightVector ) ;
 81:    float specularPower = 10.0 ;
 82:    float hDotN = dot3 ( normalize ( vofi_TexCoord6 . xyz ) , localNormal ) ;
 83:    vec3 specularContribution = vec3 ( pow ( abs ( hDotN ) , specularPower ) ) ;
 84:    vec3 diffuseColor = diffuseMap * _fa_[1 /* rpDiffuseModifier */] . xyz ;
 85:    vec3 specularColor = specMap. xyz * specularContribution * _fa_[2 /* rpSpecularModifier */] . xyz ;
 86:    vec3 lightColor = lightProj. xyz * lightFalloff. xyz ;
 87:    float rim = 1.0 - saturate ( hDotN ) ;
 88:    float rimPower = 16.0 ;
 89:    vec3 rimColor = diffuseColor * lightProj. xyz * lightFalloff. xyz * 1.0 * pow ( rim , rimPower ) * vofi_Color . rgb ;
 90:    int shadowIndex = 0 ;
 91:    vec4 shadowMatrixX = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 0 ) ] ;
 92:    vec4 shadowMatrixY = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 1 ) ] ;
 93:    vec4 shadowMatrixZ = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 2 ) ] ;
 94:    vec4 shadowMatrixW = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 3 ) ] ;
 95:    vec4 modelPosition = vec4 ( vofi_TexCoord7 . xyz , 1.0 ) ;
 96:    vec4 shadowTexcoord ;
 97:    shadowTexcoord. x = dot4 ( modelPosition , shadowMatrixX ) ;
 98:    shadowTexcoord. y = dot4 ( modelPosition , shadowMatrixY ) ;
 99:    shadowTexcoord. z = dot4 ( modelPosition , shadowMatrixZ ) ;
100:    shadowTexcoord. w = dot4 ( modelPosition , shadowMatrixW ) ;
101:    float bias = 0.001 ;
102:    shadowTexcoord. xyz /= shadowTexcoord. w ;
103:    shadowTexcoord. z = shadowTexcoord. z * 0.9991 ;
104:    shadowTexcoord. w = shadowIndex ;
105:    vec4 base = shadowTexcoord ;
106:    base. xy += _fa_[3 /* rpJitterTexScale */] . xy * - 0.5 ;
107:    float shadow = 0.0 ;
108:    float stepSize = 1.0 / 16 ;
109:    vec4 jitterTC = ( gl_FragCoord * _fa_[0 /* rpScreenCorrectionFactor */] ) + _fa_[4 /* rpJitterTexOffset */] ;
110:    for ( int i = 0 ; i < 16 ; i ++ )
111:    {
112:        vec4 jitter = base + tex2D ( samp6 , jitterTC. xy ) * _fa_[3 /* rpJitterTexScale */] ;
113:        jitter. zw = shadowTexcoord. zw ;
114:        shadow += texture ( samp5 , jitter. xywz ) ;
115:        jitterTC. x += stepSize ;
116:    }
117:    shadow *= ( 1.0 / 16 ) ;
118:    gl_FragColor . xyz = ( diffuseColor + specularColor ) * halfLdotN * lightColor * vofi_Color . rgb * shadow ;
119:    gl_FragColor . w = 1.0 ;
120: }
-----------------
0:50(30): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

While compiling fragment program renderprogs/interactionSM.pixel
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: void clip( float v ) { if ( v < 0.0 ) { discard; } }
  7: void clip( vec2 v ) { if ( any( lessThan( v, vec2( 0.0 ) ) ) ) { discard; } }
  8: void clip( vec3 v ) { if ( any( lessThan( v, vec3( 0.0 ) ) ) ) { discard; } }
  9: void clip( vec4 v ) { if ( any( lessThan( v, vec4( 0.0 ) ) ) ) { discard; } }
 10: 
 11: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
 12: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
 13: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
 14: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 15: 
 16: vec4 tex2D( sampler2D sampler, vec2 texcoord ) { return texture2D( sampler, texcoord.xy ); }
 17: 
 18: vec4 texCUBE( samplerCube sampler, vec3 texcoord ) { return textureCube( sampler, texcoord.xyz ); }
 19: 
 20: vec4 tex2Dproj( sampler2D sampler, vec3 texcoord ) { return texture2DProj( sampler, texcoord ); }
 21: 
 22: 
 23: uniform vec4 _fa_[30];
 24: 
 25: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 26: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 27: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 28: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 29: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 30: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 31: const vec4 matrixCoCg1YtoRGB1X = vec4( 1.0, -1.0, 0.0, 1.0 );
 32: const vec4 matrixCoCg1YtoRGB1Y = vec4( 0.0, 1.0, -0.50196078, 1.0 );
 33: const vec4 matrixCoCg1YtoRGB1Z = vec4( -1.0, -1.0, 1.00392156, 1.0 );
 34: vec3 ConvertYCoCgToRGB (vec4 YCoCg ) {
 35:    vec3 rgbColor ;
 36:    YCoCg. z = ( YCoCg. z * 31.875 ) + 1.0 ;
 37:    YCoCg. z = 1.0 / YCoCg. z ;
 38:    YCoCg. xy *= YCoCg. z ;
 39:    rgbColor. x = dot4 ( YCoCg , matrixCoCg1YtoRGB1X ) ;
 40:    rgbColor. y = dot4 ( YCoCg , matrixCoCg1YtoRGB1Y ) ;
 41:    rgbColor. z = dot4 ( YCoCg , matrixCoCg1YtoRGB1Z ) ;
 42:    return rgbColor ;
 43: }
 44: vec4 idtex2Dproj (sampler2D samp , vec4 texCoords ) {return tex2Dproj ( samp , texCoords. xyw ) ; }
 45: uniform sampler2D samp0;
 46: uniform sampler2D samp1;
 47: uniform sampler2D samp2;
 48: uniform sampler2D samp3;
 49: uniform sampler2D samp4;
 50: uniform sampler2DArrayShadow samp5;
 51: uniform sampler2D samp6;
 52: 
 53: varying vec4 vofi_TexCoord0;
 54: varying vec4 vofi_TexCoord1;
 55: varying vec4 vofi_TexCoord2;
 56: varying vec4 vofi_TexCoord3;
 57: varying vec4 vofi_TexCoord4;
 58: varying vec4 vofi_TexCoord5;
 59: varying vec4 vofi_TexCoord6;
 60: varying vec4 vofi_TexCoord7;
 61: varying vec4 vofi_TexCoord8;
 62: varying vec4 vofi_TexCoord9;
 63: varying vec4 vofi_Color;
 64: 
 65: 
 66: void main() {
 67:    vec4 bumpMap = tex2D ( samp0 , vofi_TexCoord1 . xy ) ;
 68:    vec4 lightFalloff = idtex2Dproj ( samp1 , vofi_TexCoord2 ) ;
 69:    vec4 lightProj = idtex2Dproj ( samp2 , vofi_TexCoord3 ) ;
 70:    vec4 YCoCG = tex2D ( samp3 , vofi_TexCoord4 . xy ) ;
 71:    vec4 specMap = tex2D ( samp4 , vofi_TexCoord5 . xy ) ;
 72:    vec3 lightVector = normalize ( vofi_TexCoord0 . xyz ) ;
 73:    vec3 diffuseMap = ConvertYCoCgToRGB ( YCoCG ) ;
 74:    vec3 localNormal ;
 75:    localNormal. xy = bumpMap. wy - 0.5 ;
 76:    localNormal. z = sqrt ( abs ( dot ( localNormal. xy , localNormal. xy ) - 0.25 ) ) ;
 77:    localNormal = normalize ( localNormal ) ;
 78:    float halfLdotN = dot3 ( localNormal , lightVector ) * 0.5 + 0.5 ;
 79:    halfLdotN *= halfLdotN ;
 80:    float ldotN = dot3 ( localNormal , lightVector ) ;
 81:    float specularPower = 10.0 ;
 82:    float hDotN = dot3 ( normalize ( vofi_TexCoord6 . xyz ) , localNormal ) ;
 83:    vec3 specularContribution = vec3 ( pow ( abs ( hDotN ) , specularPower ) ) ;
 84:    vec3 diffuseColor = diffuseMap * _fa_[1 /* rpDiffuseModifier */] . xyz ;
 85:    vec3 specularColor = specMap. xyz * specularContribution * _fa_[2 /* rpSpecularModifier */] . xyz ;
 86:    vec3 lightColor = lightProj. xyz * lightFalloff. xyz ;
 87:    float rim = 1.0 - saturate ( hDotN ) ;
 88:    float rimPower = 16.0 ;
 89:    vec3 rimColor = diffuseColor * lightProj. xyz * lightFalloff. xyz * 1.0 * pow ( rim , rimPower ) * vofi_Color . rgb ;
 90:    int shadowIndex = 0 ;
 91:    vec3 toLightGlobal = normalize ( vofi_TexCoord8 . xyz ) ;
 92:    float axis [ 6 ] ;
 93:    axis [ 0 ] = - toLightGlobal. x ;
 94:    axis [ 1 ] = toLightGlobal. x ;
 95:    axis [ 2 ] = - toLightGlobal. y ;
 96:    axis [ 3 ] = toLightGlobal. y ;
 97:    axis [ 4 ] = - toLightGlobal. z ;
 98:    axis [ 5 ] = toLightGlobal. z ;
 99:    for ( int i = 0 ; i < 6 ; i ++ )
100:    {
101:        if ( axis [ i ] > axis [ shadowIndex ] )
102:        {
103:            shadowIndex = i ;
104:        }
105:    }
106:    vec4 shadowMatrixX = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 0 ) ] ;
107:    vec4 shadowMatrixY = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 1 ) ] ;
108:    vec4 shadowMatrixZ = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 2 ) ] ;
109:    vec4 shadowMatrixW = _fa_[/* rpShadowMatrices */ 5 + int ( shadowIndex * 4 + 3 ) ] ;
110:    vec4 modelPosition = vec4 ( vofi_TexCoord7 . xyz , 1.0 ) ;
111:    vec4 shadowTexcoord ;
112:    shadowTexcoord. x = dot4 ( modelPosition , shadowMatrixX ) ;
113:    shadowTexcoord. y = dot4 ( modelPosition , shadowMatrixY ) ;
114:    shadowTexcoord. z = dot4 ( modelPosition , shadowMatrixZ ) ;
115:    shadowTexcoord. w = dot4 ( modelPosition , shadowMatrixW ) ;
116:    float bias = 0.001 ;
117:    shadowTexcoord. xyz /= shadowTexcoord. w ;
118:    shadowTexcoord. z = shadowTexcoord. z * 0.9991 ;
119:    shadowTexcoord. w = shadowIndex ;
120:    vec4 base = shadowTexcoord ;
121:    base. xy += _fa_[3 /* rpJitterTexScale */] . xy * - 0.5 ;
122:    float shadow = 0.0 ;
123:    float stepSize = 1.0 / 16 ;
124:    vec4 jitterTC = ( gl_FragCoord * _fa_[0 /* rpScreenCorrectionFactor */] ) + _fa_[4 /* rpJitterTexOffset */] ;
125:    for ( int i = 0 ; i < 16 ; i ++ )
126:    {
127:        vec4 jitter = base + tex2D ( samp6 , jitterTC. xy ) * _fa_[3 /* rpJitterTexScale */] ;
128:        jitter. zw = shadowTexcoord. zw ;
129:        shadow += texture ( samp5 , jitter. xywz ) ;
130:        jitterTC. x += stepSize ;
131:    }
132:    shadow *= ( 1.0 / 16 ) ;
133:    gl_FragColor . xyz = ( diffuseColor + specularColor ) * halfLdotN * lightColor * vofi_Color . rgb * shadow ;
134:    gl_FragColor . w = 1.0 ;
135: }
-----------------
0:50(30): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

While compiling fragment program renderprogs/interactionSM.pixel
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: void clip( float v ) { if ( v < 0.0 ) { discard; } }
  7: void clip( vec2 v ) { if ( any( lessThan( v, vec2( 0.0 ) ) ) ) { discard; } }
  8: void clip( vec3 v ) { if ( any( lessThan( v, vec3( 0.0 ) ) ) ) { discard; } }
  9: void clip( vec4 v ) { if ( any( lessThan( v, vec4( 0.0 ) ) ) ) { discard; } }
 10: 
 11: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
 12: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
 13: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
 14: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 15: 
 16: vec4 tex2D( sampler2D sampler, vec2 texcoord ) { return texture2D( sampler, texcoord.xy ); }
 17: 
 18: vec4 texCUBE( samplerCube sampler, vec3 texcoord ) { return textureCube( sampler, texcoord.xyz ); }
 19: 
 20: vec4 tex2Dproj( sampler2D sampler, vec3 texcoord ) { return texture2DProj( sampler, texcoord ); }
 21: 
 22: 
 23: uniform vec4 _fa_[31];
 24: 
 25: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 26: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 27: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 28: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 29: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 30: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 31: const vec4 matrixCoCg1YtoRGB1X = vec4( 1.0, -1.0, 0.0, 1.0 );
 32: const vec4 matrixCoCg1YtoRGB1Y = vec4( 0.0, 1.0, -0.50196078, 1.0 );
 33: const vec4 matrixCoCg1YtoRGB1Z = vec4( -1.0, -1.0, 1.00392156, 1.0 );
 34: vec3 ConvertYCoCgToRGB (vec4 YCoCg ) {
 35:    vec3 rgbColor ;
 36:    YCoCg. z = ( YCoCg. z * 31.875 ) + 1.0 ;
 37:    YCoCg. z = 1.0 / YCoCg. z ;
 38:    YCoCg. xy *= YCoCg. z ;
 39:    rgbColor. x = dot4 ( YCoCg , matrixCoCg1YtoRGB1X ) ;
 40:    rgbColor. y = dot4 ( YCoCg , matrixCoCg1YtoRGB1Y ) ;
 41:    rgbColor. z = dot4 ( YCoCg , matrixCoCg1YtoRGB1Z ) ;
 42:    return rgbColor ;
 43: }
 44: vec4 idtex2Dproj (sampler2D samp , vec4 texCoords ) {return tex2Dproj ( samp , texCoords. xyw ) ; }
 45: uniform sampler2D samp0;
 46: uniform sampler2D samp1;
 47: uniform sampler2D samp2;
 48: uniform sampler2D samp3;
 49: uniform sampler2D samp4;
 50: uniform sampler2DArrayShadow samp5;
 51: uniform sampler2D samp6;
 52: 
 53: varying vec4 vofi_TexCoord0;
 54: varying vec4 vofi_TexCoord1;
 55: varying vec4 vofi_TexCoord2;
 56: varying vec4 vofi_TexCoord3;
 57: varying vec4 vofi_TexCoord4;
 58: varying vec4 vofi_TexCoord5;
 59: varying vec4 vofi_TexCoord6;
 60: varying vec4 vofi_TexCoord7;
 61: varying vec4 vofi_TexCoord8;
 62: varying vec4 vofi_TexCoord9;
 63: varying vec4 vofi_Color;
 64: 
 65: 
 66: void main() {
 67:    vec4 bumpMap = tex2D ( samp0 , vofi_TexCoord1 . xy ) ;
 68:    vec4 lightFalloff = idtex2Dproj ( samp1 , vofi_TexCoord2 ) ;
 69:    vec4 lightProj = idtex2Dproj ( samp2 , vofi_TexCoord3 ) ;
 70:    vec4 YCoCG = tex2D ( samp3 , vofi_TexCoord4 . xy ) ;
 71:    vec4 specMap = tex2D ( samp4 , vofi_TexCoord5 . xy ) ;
 72:    vec3 lightVector = normalize ( vofi_TexCoord0 . xyz ) ;
 73:    vec3 diffuseMap = ConvertYCoCgToRGB ( YCoCG ) ;
 74:    vec3 localNormal ;
 75:    localNormal. xy = bumpMap. wy - 0.5 ;
 76:    localNormal. z = sqrt ( abs ( dot ( localNormal. xy , localNormal. xy ) - 0.25 ) ) ;
 77:    localNormal = normalize ( localNormal ) ;
 78:    float halfLdotN = dot3 ( localNormal , lightVector ) * 0.5 + 0.5 ;
 79:    halfLdotN *= halfLdotN ;
 80:    float ldotN = dot3 ( localNormal , lightVector ) ;
 81:    float specularPower = 10.0 ;
 82:    float hDotN = dot3 ( normalize ( vofi_TexCoord6 . xyz ) , localNormal ) ;
 83:    vec3 specularContribution = vec3 ( pow ( abs ( hDotN ) , specularPower ) ) ;
 84:    vec3 diffuseColor = diffuseMap * _fa_[1 /* rpDiffuseModifier */] . xyz ;
 85:    vec3 specularColor = specMap. xyz * specularContribution * _fa_[2 /* rpSpecularModifier */] . xyz ;
 86:    vec3 lightColor = lightProj. xyz * lightFalloff. xyz ;
 87:    float rim = 1.0 - saturate ( hDotN ) ;
 88:    float rimPower = 16.0 ;
 89:    vec3 rimColor = diffuseColor * lightProj. xyz * lightFalloff. xyz * 1.0 * pow ( rim , rimPower ) * vofi_Color . rgb ;
 90:    int shadowIndex = 0 ;
 91:    float viewZ = - vofi_TexCoord9 . z ;
 92:    shadowIndex = 4 ;
 93:    for ( int i = 0 ; i < 4 ; i ++ )
 94:    {
 95:        if ( viewZ < _fa_[5 /* rpCascadeDistances */] [ i ] )
 96:        {
 97:            shadowIndex = i ;
 98:            break ;
 99:        }
100:    }
101:    vec4 shadowMatrixX = _fa_[/* rpShadowMatrices */ 6 + int ( shadowIndex * 4 + 0 ) ] ;
102:    vec4 shadowMatrixY = _fa_[/* rpShadowMatrices */ 6 + int ( shadowIndex * 4 + 1 ) ] ;
103:    vec4 shadowMatrixZ = _fa_[/* rpShadowMatrices */ 6 + int ( shadowIndex * 4 + 2 ) ] ;
104:    vec4 shadowMatrixW = _fa_[/* rpShadowMatrices */ 6 + int ( shadowIndex * 4 + 3 ) ] ;
105:    vec4 modelPosition = vec4 ( vofi_TexCoord7 . xyz , 1.0 ) ;
106:    vec4 shadowTexcoord ;
107:    shadowTexcoord. x = dot4 ( modelPosition , shadowMatrixX ) ;
108:    shadowTexcoord. y = dot4 ( modelPosition , shadowMatrixY ) ;
109:    shadowTexcoord. z = dot4 ( modelPosition , shadowMatrixZ ) ;
110:    shadowTexcoord. w = dot4 ( modelPosition , shadowMatrixW ) ;
111:    float bias = 0.001 ;
112:    shadowTexcoord. xyz /= shadowTexcoord. w ;
113:    shadowTexcoord. z = shadowTexcoord. z * 0.9991 ;
114:    shadowTexcoord. w = shadowIndex ;
115:    vec4 base = shadowTexcoord ;
116:    base. xy += _fa_[3 /* rpJitterTexScale */] . xy * - 0.5 ;
117:    float shadow = 0.0 ;
118:    float stepSize = 1.0 / 16 ;
119:    vec4 jitterTC = ( gl_FragCoord * _fa_[0 /* rpScreenCorrectionFactor */] ) + _fa_[4 /* rpJitterTexOffset */] ;
120:    for ( int i = 0 ; i < 16 ; i ++ )
121:    {
122:        vec4 jitter = base + tex2D ( samp6 , jitterTC. xy ) * _fa_[3 /* rpJitterTexScale */] ;
123:        jitter. zw = shadowTexcoord. zw ;
124:        shadow += texture ( samp5 , jitter. xywz ) ;
125:        jitterTC. x += stepSize ;
126:    }
127:    shadow *= ( 1.0 / 16 ) ;
128:    gl_FragColor . xyz = ( diffuseColor + specularColor ) * halfLdotN * lightColor * vofi_Color . rgb * shadow ;
129:    gl_FragColor . w = 1.0 ;
130: }
-----------------
0:50(30): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

While compiling vertex program renderprogs/environment_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[6];
 13: 
 14: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 15: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 16: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 17: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 18: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 19: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 20: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 21: 
 22: attribute vec4 in_Position;
 23: attribute vec2 in_TexCoord;
 24: attribute vec4 in_Normal;
 25: attribute vec4 in_Color;
 26: attribute vec4 in_Color2;
 27: 
 28: varying vec3 vofi_TexCoord0;
 29: varying vec3 vofi_TexCoord1;
 30: varying vec4 vofi_Color;
 31: 
 32: void main() {
 33:    vec4 vNormal = in_Normal * 2.0 - 1.0 ;
 34:    float w0 = in_Color2 . x ;
 35:    float w1 = in_Color2 . y ;
 36:    float w2 = in_Color2 . z ;
 37:    float w3 = in_Color2 . w ;
 38:    vec4 matX , matY , matZ ;
 39:    float joint = in_Color . x * 255.1 * 3 ;
 40:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 41:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 42:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 43:    joint = in_Color . y * 255.1 * 3 ;
 44:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 45:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 46:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 47:    joint = in_Color . z * 255.1 * 3 ;
 48:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 49:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 50:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 51:    joint = in_Color . w * 255.1 * 3 ;
 52:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 53:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 54:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 55:    vec3 vNormalSkinned ;
 56:    vNormalSkinned. x = dot3 ( matX , vNormal ) ;
 57:    vNormalSkinned. y = dot3 ( matY , vNormal ) ;
 58:    vNormalSkinned. z = dot3 ( matZ , vNormal ) ;
 59:    vNormalSkinned = normalize ( vNormalSkinned ) ;
 60:    vec4 modelPosition ;
 61:    modelPosition. x = dot4 ( matX , in_Position ) ;
 62:    modelPosition. y = dot4 ( matY , in_Position ) ;
 63:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 64:    modelPosition. w = 1.0 ;
 65:    gl_Position . x = dot4 ( modelPosition , _va_[2 /* rpMVPmatrixX */] ) ;
 66:    gl_Position . y = dot4 ( modelPosition , _va_[3 /* rpMVPmatrixY */] ) ;
 67:    gl_Position . z = dot4 ( modelPosition , _va_[4 /* rpMVPmatrixZ */] ) ;
 68:    gl_Position . w = dot4 ( modelPosition , _va_[5 /* rpMVPmatrixW */] ) ;
 69:    vec4 toEye = _va_[0 /* rpLocalViewOrigin */] - modelPosition ;
 70:    vofi_TexCoord0 = toEye. xyz ;
 71:    vofi_TexCoord1 = vNormalSkinned. xyz ;
 72:    vofi_Color = _va_[1 /* rpColor */] ;
 73: }
-----------------
0:20(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/bumpyenvironment_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[9];
 13: 
 14: float dot3 (vec3 a , vec3 b ) {return dot ( a , b ) ; }
 15: float dot3 (vec3 a , vec4 b ) {return dot ( a , b. xyz ) ; }
 16: float dot3 (vec4 a , vec3 b ) {return dot ( a. xyz , b ) ; }
 17: float dot3 (vec4 a , vec4 b ) {return dot ( a. xyz , b. xyz ) ; }
 18: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 19: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 20: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 21: 
 22: attribute vec4 in_Position;
 23: attribute vec2 in_TexCoord;
 24: attribute vec4 in_Normal;
 25: attribute vec4 in_Tangent;
 26: attribute vec4 in_Color;
 27: attribute vec4 in_Color2;
 28: 
 29: varying vec2 vofi_TexCoord0;
 30: varying vec3 vofi_TexCoord1;
 31: varying vec3 vofi_TexCoord2;
 32: varying vec3 vofi_TexCoord3;
 33: varying vec3 vofi_TexCoord4;
 34: varying vec4 vofi_Color;
 35: 
 36: void main() {
 37:    vec4 vNormal = in_Normal * 2.0 - 1.0 ;
 38:    vec4 vTangent = in_Tangent * 2.0 - 1.0 ;
 39:    vec3 vBinormal = cross ( vNormal. xyz , vTangent. xyz ) * vTangent. w ;
 40:    float w0 = in_Color2 . x ;
 41:    float w1 = in_Color2 . y ;
 42:    float w2 = in_Color2 . z ;
 43:    float w3 = in_Color2 . w ;
 44:    vec4 matX , matY , matZ ;
 45:    float joint = in_Color . x * 255.1 * 3 ;
 46:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 47:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 48:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 49:    joint = in_Color . y * 255.1 * 3 ;
 50:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 51:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 52:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 53:    joint = in_Color . z * 255.1 * 3 ;
 54:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 55:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 56:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 57:    joint = in_Color . w * 255.1 * 3 ;
 58:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 59:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 60:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 61:    vec3 normal ;
 62:    normal. x = dot3 ( matX , vNormal ) ;
 63:    normal. y = dot3 ( matY , vNormal ) ;
 64:    normal. z = dot3 ( matZ , vNormal ) ;
 65:    normal = normalize ( normal ) ;
 66:    vec3 tangent ;
 67:    tangent. x = dot3 ( matX , vTangent ) ;
 68:    tangent. y = dot3 ( matY , vTangent ) ;
 69:    tangent. z = dot3 ( matZ , vTangent ) ;
 70:    tangent = normalize ( tangent ) ;
 71:    vec3 binormal ;
 72:    binormal. x = dot3 ( matX , vBinormal ) ;
 73:    binormal. y = dot3 ( matY , vBinormal ) ;
 74:    binormal. z = dot3 ( matZ , vBinormal ) ;
 75:    binormal = normalize ( binormal ) ;
 76:    vec4 modelPosition ;
 77:    modelPosition. x = dot4 ( matX , in_Position ) ;
 78:    modelPosition. y = dot4 ( matY , in_Position ) ;
 79:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 80:    modelPosition. w = 1.0 ;
 81:    gl_Position . x = dot4 ( modelPosition , _va_[2 /* rpMVPmatrixX */] ) ;
 82:    gl_Position . y = dot4 ( modelPosition , _va_[3 /* rpMVPmatrixY */] ) ;
 83:    gl_Position . z = dot4 ( modelPosition , _va_[4 /* rpMVPmatrixZ */] ) ;
 84:    gl_Position . w = dot4 ( modelPosition , _va_[5 /* rpMVPmatrixW */] ) ;
 85:    vofi_TexCoord0 = in_TexCoord . xy ;
 86:    vec4 toEye = _va_[0 /* rpLocalViewOrigin */] - modelPosition ;
 87:    vofi_TexCoord1 . x = dot3 ( toEye , _va_[6 /* rpModelMatrixX */] ) ;
 88:    vofi_TexCoord1 . y = dot3 ( toEye , _va_[7 /* rpModelMatrixY */] ) ;
 89:    vofi_TexCoord1 . z = dot3 ( toEye , _va_[8 /* rpModelMatrixZ */] ) ;
 90:    vofi_TexCoord2 . x = dot3 ( tangent , _va_[6 /* rpModelMatrixX */] ) ;
 91:    vofi_TexCoord3 . x = dot3 ( tangent , _va_[7 /* rpModelMatrixY */] ) ;
 92:    vofi_TexCoord4 . x = dot3 ( tangent , _va_[8 /* rpModelMatrixZ */] ) ;
 93:    vofi_TexCoord2 . y = dot3 ( binormal , _va_[6 /* rpModelMatrixX */] ) ;
 94:    vofi_TexCoord3 . y = dot3 ( binormal , _va_[7 /* rpModelMatrixY */] ) ;
 95:    vofi_TexCoord4 . y = dot3 ( binormal , _va_[8 /* rpModelMatrixZ */] ) ;
 96:    vofi_TexCoord2 . z = dot3 ( normal , _va_[6 /* rpModelMatrixX */] ) ;
 97:    vofi_TexCoord3 . z = dot3 ( normal , _va_[7 /* rpModelMatrixY */] ) ;
 98:    vofi_TexCoord4 . z = dot3 ( normal , _va_[8 /* rpModelMatrixZ */] ) ;
 99:    vofi_Color = _va_[1 /* rpColor */] ;
100: }
-----------------
0:20(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/depth_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[4];
 13: 
 14: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 15: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 16: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 17: 
 18: attribute vec4 in_Position;
 19: attribute vec4 in_Color;
 20: attribute vec4 in_Color2;
 21: 
 22: 
 23: void main() {
 24:    float w0 = in_Color2 . x ;
 25:    float w1 = in_Color2 . y ;
 26:    float w2 = in_Color2 . z ;
 27:    float w3 = in_Color2 . w ;
 28:    vec4 matX , matY , matZ ;
 29:    float joint = in_Color . x * 255.1 * 3 ;
 30:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 31:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 32:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 33:    joint = in_Color . y * 255.1 * 3 ;
 34:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 35:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 36:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 37:    joint = in_Color . z * 255.1 * 3 ;
 38:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 39:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 40:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 41:    joint = in_Color . w * 255.1 * 3 ;
 42:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 43:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 44:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 45:    vec4 modelPosition ;
 46:    modelPosition. x = dot4 ( matX , in_Position ) ;
 47:    modelPosition. y = dot4 ( matY , in_Position ) ;
 48:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 49:    modelPosition. w = 1.0 ;
 50:    gl_Position . x = dot4 ( modelPosition , _va_[0 /* rpMVPmatrixX */] ) ;
 51:    gl_Position . y = dot4 ( modelPosition , _va_[1 /* rpMVPmatrixY */] ) ;
 52:    gl_Position . z = dot4 ( modelPosition , _va_[2 /* rpMVPmatrixZ */] ) ;
 53:    gl_Position . w = dot4 ( modelPosition , _va_[3 /* rpMVPmatrixW */] ) ;
 54: }
-----------------
0:16(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/shadow_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[5];
 13: 
 14: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 15: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 16: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 17: 
 18: attribute vec4 in_Position;
 19: attribute vec4 in_Color;
 20: attribute vec4 in_Color2;
 21: 
 22: 
 23: void main() {
 24:    float w0 = in_Color2 . x ;
 25:    float w1 = in_Color2 . y ;
 26:    float w2 = in_Color2 . z ;
 27:    float w3 = in_Color2 . w ;
 28:    vec4 matX , matY , matZ ;
 29:    float joint = in_Color . x * 255.1 * 3 ;
 30:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 31:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 32:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 33:    joint = in_Color . y * 255.1 * 3 ;
 34:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 35:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 36:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 37:    joint = in_Color . z * 255.1 * 3 ;
 38:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 39:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 40:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 41:    joint = in_Color . w * 255.1 * 3 ;
 42:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 43:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 44:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 45:    vec4 vertexPosition = in_Position ;
 46:    vertexPosition. w = 1.0 ;
 47:    vec4 modelPosition ;
 48:    modelPosition. x = dot4 ( matX , vertexPosition ) ;
 49:    modelPosition. y = dot4 ( matY , vertexPosition ) ;
 50:    modelPosition. z = dot4 ( matZ , vertexPosition ) ;
 51:    modelPosition. w = in_Position . w ;
 52:    vec4 vPos = modelPosition - _va_[0 /* rpLocalLightOrigin */] ;
 53:    vPos = ( vPos. wwww * _va_[0 /* rpLocalLightOrigin */] ) + vPos ;
 54:    gl_Position . x = dot4 ( vPos , _va_[1 /* rpMVPmatrixX */] ) ;
 55:    gl_Position . y = dot4 ( vPos , _va_[2 /* rpMVPmatrixY */] ) ;
 56:    gl_Position . z = dot4 ( vPos , _va_[3 /* rpMVPmatrixZ */] ) ;
 57:    gl_Position . w = dot4 ( vPos , _va_[4 /* rpMVPmatrixW */] ) ;
 58: }
-----------------
0:16(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/shadowDebug_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[5];
 13: 
 14: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 15: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 16: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 17: 
 18: attribute vec4 in_Position;
 19: attribute vec4 in_Color;
 20: attribute vec4 in_Color2;
 21: 
 22: 
 23: void main() {
 24:    float w0 = in_Color2 . x ;
 25:    float w1 = in_Color2 . y ;
 26:    float w2 = in_Color2 . z ;
 27:    float w3 = in_Color2 . w ;
 28:    vec4 matX , matY , matZ ;
 29:    float joint = in_Color . x * 255.1 * 3 ;
 30:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 31:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 32:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 33:    joint = in_Color . y * 255.1 * 3 ;
 34:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 35:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 36:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 37:    joint = in_Color . z * 255.1 * 3 ;
 38:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 39:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 40:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 41:    joint = in_Color . w * 255.1 * 3 ;
 42:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 43:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 44:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 45:    vec4 vertexPosition = in_Position ;
 46:    vertexPosition. w = 1.0 ;
 47:    vec4 modelPosition ;
 48:    modelPosition. x = dot4 ( matX , vertexPosition ) ;
 49:    modelPosition. y = dot4 ( matY , vertexPosition ) ;
 50:    modelPosition. z = dot4 ( matZ , vertexPosition ) ;
 51:    modelPosition. w = in_Position . w ;
 52:    vec4 vPos = modelPosition - _va_[0 /* rpLocalLightOrigin */] ;
 53:    vPos = ( vPos. wwww * _va_[0 /* rpLocalLightOrigin */] ) + vPos ;
 54:    gl_Position . x = dot4 ( vPos , _va_[1 /* rpMVPmatrixX */] ) ;
 55:    gl_Position . y = dot4 ( vPos , _va_[2 /* rpMVPmatrixY */] ) ;
 56:    gl_Position . z = dot4 ( vPos , _va_[3 /* rpMVPmatrixZ */] ) ;
 57:    gl_Position . w = dot4 ( vPos , _va_[4 /* rpMVPmatrixW */] ) ;
 58: }
-----------------
0:16(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling vertex program renderprogs/fog_skinned.vertex
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
  7: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
  8: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
  9: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 10: 
 11: 
 12: uniform vec4 _va_[8];
 13: 
 14: float dot4 (vec4 a , vec4 b ) {return dot ( a , b ) ; }
 15: float dot4 (vec2 a , vec4 b ) {return dot ( vec4 ( a , 0 , 1 ) , b ) ; }
 16: uniform matrices_ubo {vec4 matrices [ 408 ] ; } ;
 17: 
 18: attribute vec4 in_Position;
 19: attribute vec2 in_TexCoord;
 20: attribute vec4 in_Color;
 21: attribute vec4 in_Color2;
 22: 
 23: varying vec2 vofi_TexCoord0;
 24: varying vec2 vofi_TexCoord1;
 25: 
 26: void main() {
 27:    float w0 = in_Color2 . x ;
 28:    float w1 = in_Color2 . y ;
 29:    float w2 = in_Color2 . z ;
 30:    float w3 = in_Color2 . w ;
 31:    vec4 matX , matY , matZ ;
 32:    float joint = in_Color . x * 255.1 * 3 ;
 33:    matX = matrices [ int ( joint + 0 ) ] * w0 ;
 34:    matY = matrices [ int ( joint + 1 ) ] * w0 ;
 35:    matZ = matrices [ int ( joint + 2 ) ] * w0 ;
 36:    joint = in_Color . y * 255.1 * 3 ;
 37:    matX += matrices [ int ( joint + 0 ) ] * w1 ;
 38:    matY += matrices [ int ( joint + 1 ) ] * w1 ;
 39:    matZ += matrices [ int ( joint + 2 ) ] * w1 ;
 40:    joint = in_Color . z * 255.1 * 3 ;
 41:    matX += matrices [ int ( joint + 0 ) ] * w2 ;
 42:    matY += matrices [ int ( joint + 1 ) ] * w2 ;
 43:    matZ += matrices [ int ( joint + 2 ) ] * w2 ;
 44:    joint = in_Color . w * 255.1 * 3 ;
 45:    matX += matrices [ int ( joint + 0 ) ] * w3 ;
 46:    matY += matrices [ int ( joint + 1 ) ] * w3 ;
 47:    matZ += matrices [ int ( joint + 2 ) ] * w3 ;
 48:    vec4 modelPosition ;
 49:    modelPosition. x = dot4 ( matX , in_Position ) ;
 50:    modelPosition. y = dot4 ( matY , in_Position ) ;
 51:    modelPosition. z = dot4 ( matZ , in_Position ) ;
 52:    modelPosition. w = 1.0 ;
 53:    gl_Position . x = dot4 ( modelPosition , _va_[0 /* rpMVPmatrixX */] ) ;
 54:    gl_Position . y = dot4 ( modelPosition , _va_[1 /* rpMVPmatrixY */] ) ;
 55:    gl_Position . z = dot4 ( modelPosition , _va_[2 /* rpMVPmatrixZ */] ) ;
 56:    gl_Position . w = dot4 ( modelPosition , _va_[3 /* rpMVPmatrixW */] ) ;
 57:    vofi_TexCoord0 . x = dot4 ( modelPosition , _va_[4 /* rpTexGen0S */] ) ;
 58:    vofi_TexCoord0 . y = dot4 ( modelPosition , _va_[5 /* rpTexGen0T */] ) ;
 59:    vofi_TexCoord1 . x = dot4 ( modelPosition , _va_[6 /* rpTexGen1S */] ) ;
 60:    vofi_TexCoord1 . y = dot4 ( modelPosition , _va_[7 /* rpTexGen1T */] ) ;
 61: }
-----------------
0:16(1): error: #version 140 / GL_ARB_uniform_buffer_object required for defining uniform blocks

While compiling fragment program renderprogs/motionBlur.pixel
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: void clip( float v ) { if ( v < 0.0 ) { discard; } }
  7: void clip( vec2 v ) { if ( any( lessThan( v, vec2( 0.0 ) ) ) ) { discard; } }
  8: void clip( vec3 v ) { if ( any( lessThan( v, vec3( 0.0 ) ) ) ) { discard; } }
  9: void clip( vec4 v ) { if ( any( lessThan( v, vec4( 0.0 ) ) ) ) { discard; } }
 10: 
 11: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
 12: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
 13: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
 14: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 15: 
 16: vec4 tex2D( sampler2D sampler, vec2 texcoord ) { return texture2D( sampler, texcoord.xy ); }
 17: 
 18: vec4 texCUBE( samplerCube sampler, vec3 texcoord ) { return textureCube( sampler, texcoord.xyz ); }
 19: 
 20: vec4 tex2Dproj( sampler2D sampler, vec3 texcoord ) { return texture2DProj( sampler, texcoord ); }
 21: 
 22: 
 23: uniform vec4 _fa_[6];
 24: 
 25: uniform sampler2D samp0;
 26: uniform sampler2D samp1;
 27: 
 28: varying vec2 vofi_TexCoord0;
 29: 
 30: 
 31: void main() {
 32:    if ( tex2D ( samp0 , vofi_TexCoord0 ). w == 0.0 ) {
 33:        discard ;
 34:    }
 35:    float windowZ = tex2D ( samp1 , vofi_TexCoord0 ). x ;
 36:    vec3 ndc = vec3 ( vofi_TexCoord0 * 2.0 - 1.0 , windowZ * 2.0 - 1.0 ) ;
 37:    float clipW = - _fa_[4 /* rpProjectionMatrixZ */] . w / ( - _fa_[4 /* rpProjectionMatrixZ */] . z - ndc. z ) ;
 38:    vec4 clip = vec4 ( ndc * clipW , clipW ) ;
 39:    vec4 reClip ;
 40:    reClip. x = dot ( _fa_[0 /* rpMVPmatrixX */] , clip ) ;
 41:    reClip. y = dot ( _fa_[1 /* rpMVPmatrixY */] , clip ) ;
 42:    reClip. z = dot ( _fa_[2 /* rpMVPmatrixZ */] , clip ) ;
 43:    reClip. w = dot ( _fa_[3 /* rpMVPmatrixW */] , clip ) ;
 44:    vec2 prevTexCoord ;
 45:    prevTexCoord. x = ( reClip. x / reClip. w ) * 0.5 + 0.5 ;
 46:    prevTexCoord. y = ( reClip. y / reClip. w ) * 0.5 + 0.5 ;
 47:    vec2 texCoord = prevTexCoord ;
 48:    vec2 delta = ( vofi_TexCoord0 - prevTexCoord ) ;
 49:    vec3 sum = vec3 ( 0.0 ) ;
 50:    float goodSamples = 0 ;
 51:    float samples = _fa_[5 /* rpOverbright */] . x ;
 52:    for ( float i = 0 ; i < samples ; i = i + 1 ) {
 53:        vec2 pos = vofi_TexCoord0 + delta * ( ( i / ( samples - 1 ) ) - 0.5 ) ;
 54:        vec4 color = tex2D ( samp0 , pos ) ;
 55:        sum += color. xyz * color. w ;
 56:        goodSamples += color. w ;
 57:    }
 58:    float invScale = 1.0 / goodSamples ;
 59:    gl_FragColor = vec4 ( sum * invScale , 1.0 ) ;
 60: }
-----------------
0:50(8): error: initializer of type int cannot be assigned to variable of type float
0:52(14): error: initializer of type int cannot be assigned to variable of type float
0:52(34): error: could not implicitly convert operands to relational operator
0:52(34): error: loop condition must be scalar boolean
0:53(60): error: could not implicitly convert operands to arithmetic operator
0:53(62): error: operands to arithmetic operators must be numeric
0:53(70): error: operands to arithmetic operators must be numeric
0:53(72): error: operands to arithmetic operators must be numeric
0:53(72): error: operands to arithmetic operators must be numeric
0:56(26): error: could not implicitly convert operands to arithmetic operator
0:56(26): error: type mismatch
0:58(37): error: could not implicitly convert operands to arithmetic operator

While compiling fragment program renderprogs/debug_shadowmap.pixel
-----------------
  1: #version 100
  2: #define GLES2
  3: #define PC
  4: precision mediump float;
  5: 
  6: void clip( float v ) { if ( v < 0.0 ) { discard; } }
  7: void clip( vec2 v ) { if ( any( lessThan( v, vec2( 0.0 ) ) ) ) { discard; } }
  8: void clip( vec3 v ) { if ( any( lessThan( v, vec3( 0.0 ) ) ) ) { discard; } }
  9: void clip( vec4 v ) { if ( any( lessThan( v, vec4( 0.0 ) ) ) ) { discard; } }
 10: 
 11: float saturate( float v ) { return clamp( v, 0.0, 1.0 ); }
 12: vec2 saturate( vec2 v ) { return clamp( v, 0.0, 1.0 ); }
 13: vec3 saturate( vec3 v ) { return clamp( v, 0.0, 1.0 ); }
 14: vec4 saturate( vec4 v ) { return clamp( v, 0.0, 1.0 ); }
 15: 
 16: vec4 tex2D( sampler2D sampler, vec2 texcoord ) { return texture2D( sampler, texcoord.xy ); }
 17: 
 18: vec4 texCUBE( samplerCube sampler, vec3 texcoord ) { return textureCube( sampler, texcoord.xyz ); }
 19: 
 20: vec4 tex2Dproj( sampler2D sampler, vec3 texcoord ) { return texture2DProj( sampler, texcoord ); }
 21: 
 22: 
 23: uniform vec4 _fa_[1];
 24: 
 25: uniform sampler2DArray samp0;
 26: 
 27: varying vec2 vofi_TexCoord0;
 28: 
 29: 
 30: void main() {
 31:    vec3 tc ;
 32:    tc. xy = vofi_TexCoord0 . xy ;
 33:    tc. z = _fa_[0 /* rpScreenCorrectionFactor */] . x ;
 34:    gl_FragColor = texture ( samp0 , tc ) ;
 35: }
-----------------
0:25(24): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

----- Initializing Sound System ------
Setup OpenAL device and context... Done.
OpenAL vendor: OpenAL Community
OpenAL renderer: OpenAL Soft
OpenAL version: 1.1 ALSOFT 1.14
OpenAL extensions: AL_EXT_ALAW AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_LOKI_quadriphonic AL_SOFT_buffer_samples AL_SOFT_buffer_sub_data AL_SOFTX_deferred_updates AL_SOFT_direct_channels AL_SOFT_loop_points
sound system initialized.
--------------------------------------
------- Initializing renderSystem --------
WARNING: Loading FFMPEG...

Updating texture filter parameters.
renderSystem initialized.
--------------------------------------
Skipping Intro Videos!
Reading strings/english.lang as UTF-8
9104 strings read
--------- Initializing Game ----------
gamename: baseDOOM-1
gamedate: May 10 2014
Initializing event system
...535 event definitions
Initializing class hierarchy
...158 classes, 992960 bytes for event callbacks
Initializing scripts
/proc/cpuinfo CPU frequency: 2501 MHz
Compiled '/usr/local/share/d3bfg/base/script/doom_main.script': 396.1 ms
---------- Compile stats ----------

Memory usage:
     Strings: 120, 15840 bytes
  Statements: 95386, 3815440 bytes
   Functions: 3070, 496728 bytes
   Variables: 239712 bytes
    Mem used: 6284512 bytes
 Static data: 6266520 bytes
   Allocated: 8567312 bytes
 Thread size: 14064 bytes

...6 aas types
game initialized.
--------------------------------------
WARNING: Original Doom 3 RoQ Cinematic not found: 'video/intro/introloop.roq'

WARNING: New filename: 'video/intro/introloop.bik'

WARNING: Loaded FFMPEG file: 'video/intro/introloop.bik', looping=1

WARNING: 512x512, 30.000000 FPS, 360.000000 sec
WARNING: Original Doom 3 RoQ Cinematic not found: 'video/mars1.roq'

WARNING: New filename: 'video/mars1.bik'

WARNING: Loaded FFMPEG file: 'video/mars1.bik', looping=0

WARNING: 512x512, 30.000000 FPS, 965.000000 sec
WARNING: Original Doom 3 RoQ Cinematic not found: 'video/mars_rotation.roq'

WARNING: New filename: 'video/mars_rotation.bik'

WARNING: Loaded FFMPEG file: 'video/mars_rotation.bik', looping=1

WARNING: 1567x406, 30.000000 FPS, 3000.000000 sec
----- idRenderModelManagerLocal::EndLevelLoad -----
    0 models purged from previous level,     3 models kept.
---------------------------------------------------
----- idImageManager::EndLevelLoad -----
   30 images loaded in   0.0 seconds
----------------------------------------
----- idSoundSystemLocal::EndLevelLoad -----
OpenAL Error: Invalid Enum (0xa002), @ /usr/local/share/d3bfg/src/RBDOOM-3-BFG/neo/sound/OpenAL/AL_SoundSample.cpp 631
    7 sounds loaded in   0.1 seconds
----------------------------------------
------------- Warnings ---------------
during DOOM 3: BFG Edition initialization...
WARNING: Unable to open resource file maps/_startup.resources
WARNING: Loading FFMPEG...

WARNING: Original Doom 3 RoQ Cinematic not found: 'video/intro/introloop.roq'

WARNING: New filename: 'video/intro/introloop.bik'

WARNING: Loaded FFMPEG file: 'video/intro/introloop.bik', looping=1

WARNING: 512x512, 30.000000 FPS, 360.000000 sec
WARNING: Original Doom 3 RoQ Cinematic not found: 'video/mars1.roq'

WARNING: New filename: 'video/mars1.bik'

WARNING: Loaded FFMPEG file: 'video/mars1.bik', looping=0

WARNING: 512x512, 30.000000 FPS, 965.000000 sec
WARNING: Original Doom 3 RoQ Cinematic not found: 'video/mars_rotation.roq'

WARNING: New filename: 'video/mars_rotation.bik'

WARNING: Loaded FFMPEG file: 'video/mars_rotation.bik', looping=1

WARNING: 1567x406, 30.000000 FPS, 3000.000000 sec
14 warnings
Preloading images...
00362 images preloaded ( or were already loaded ) in   0.1 seconds
----------------------------------------
00259 sounds preloaded in   0.1 seconds
----------------------------------------
WARNING: Couldn't load image: _doomclassic : _doomclassic#__0200
--- Common Initialization Complete ---
QA Timing IIS: 005146ms
terminal support enabled ( use +set in_tty 0 to disabled )
pid: 3057
3792 MB System Memory
Added local user: Biel-laptop
Opening IP socket: localhost:27015
execing joy_lefty.cfg
NET: PartyToken is 25889 (seed = 154016)
--------- Execute Map Change ---------
Map: game/alphalabs2
Loaded resource file maps/alphalabs2.resources
--------- Game Map Shutdown ----------
--------------------------------------
     4 msec to unload map
     1 msec to free assets
Preloading images...
01958 images preloaded ( or were already loaded ) in   0.3 seconds
----------------------------------------
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHazeWithMaskAndVertex_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMaskAndVertex_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMaskAndVertex_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHazeWithMaskAndVertex_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMaskAndVertex_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMaskAndVertex_fragment.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHazeWithMask_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMask_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMask_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHazeWithMask_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMask_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHazeWithMask_fragment.uniforms
00242 models preloaded ( or were already loaded ) in   0.2 seconds
----------------------------------------
00843 sounds preloaded in   0.6 seconds
----------------------------------------
Preloading anims...
00653 anims preloaded ( or were already loaded ) in   0.0 seconds
----------------------------------------
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHaze_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHaze_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHaze_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/heatHaze_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHaze_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/heatHaze_fragment.uniforms
----------- Game Map Init ------------
collision data:
   549 models
 85170 vertices (1996 KB)
157504 edges (5537 KB)
141336 polygons (10194 KB)
 11852 brushes (1632 KB)
 19765 nodes (926 KB)
112230 polygon refs (1753 KB)
 22529 brush refs (352 KB)
 46175 internal edges
  3677 sharp edges
     0 contained polygons removed
     0 polygons merged
 22392 KB total memory used
16 msec to load collision data.
Preloading collision models...
00121 collision models preloaded ( or were already loaded ) in   0.0 seconds
----------------------------------------
map bounds are (6448.0, 5247.9, 1944.0)
max clip sector is (201.5, 328.0, 243.0)
   11 KB passage memory used to build PVS
    1 msec to calculate PVS
  116 areas
  256 portals
    9 areas visible on average
    1 KB PVS data
[Load AAS]
loading maps/game/alphalabs2.aas48
done.
[Load AAS]
loading maps/game/alphalabs2.aas96
WARNING: Couldn't load AAS file: 'maps/game/alphalabs2.aas96'
[Load AAS]
loading maps/game/alphalabs2.aas_guardian
WARNING: Couldn't load AAS file: 'maps/game/alphalabs2.aas_guardian'
[Load AAS]
loading maps/game/alphalabs2.aas_mancubus
WARNING: Couldn't load AAS file: 'maps/game/alphalabs2.aas_mancubus'
[Load AAS]
loading maps/game/alphalabs2.aas_sabaoth
WARNING: Couldn't load AAS file: 'maps/game/alphalabs2.aas_sabaoth'
[Load AAS]
loading maps/game/alphalabs2.aas_cyberdemon
WARNING: Couldn't load AAS file: 'maps/game/alphalabs2.aas_cyberdemon'
Entering doom_main()
Exiting doom_main()
Spawning entities
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_2' at (-3060 1414 196) has no modified animation 'af_pose'
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_3' at (-3038 1484 196) has no modified animation 'af_pose'
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_1' at (-3020 1382 196) has no modified animation 'af_pose'
WARNING: Joint 'Body' not found on 'alphalabs2_scientist1_1'
WARNING: Original Doom 3 RoQ Cinematic not found: 'sound/vo/video/mfs.roq'

WARNING: New filename: 'sound/vo/video/mfs.bik'

WARNING: idCinematic: Cannot open FFMPEG video file: 'sound/vo/video/mfs.bik', 0

...1932 entities spawned, 2 inhibited

==== Processing events ====
client 0 connected.
SpawnPlayer: 0
WARNING: Original Doom 3 RoQ Cinematic not found: 'sound/VO/video/video_marine_sops.roq'

WARNING: New filename: 'sound/VO/video/video_marine_sops.bik'

WARNING: Loaded FFMPEG file: 'sound/VO/video/video_marine_sops.bik', looping=0

WARNING: 256x256, 30.000000 FPS, 2186.000000 sec
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb_draw_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb_draw_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb_draw_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb_draw_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb_draw_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb_draw_fragment.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb1_capture_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb1_capture_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb1_capture_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb1_capture_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb1_capture_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb1_capture_fragment.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb2_capture_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb2_capture_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb2_capture_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb2_capture_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb2_capture_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb2_capture_fragment.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb3_capture_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb3_capture_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb3_capture_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/bloodorb3_capture_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb3_capture_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/bloodorb3_capture_fragment.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/enviroSuit_vertex.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/enviroSuit_vertex.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/enviroSuit_vertex.uniforms
writing to: /usr/local/share/d3bfg/base/renderprogs/hlsl/enviroSuit_fragment.hlsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/enviroSuit_fragment.glsl
writing to: /usr/local/share/d3bfg/base/renderprogs/glsles-1_0/enviroSuit_fragment.uniforms
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Unknown stat 'desc' added to player's inventory
Biel-laptop joined the game.
--------------------------------------
Sending networkSync cvars:
pm_staminathreshold = 4
pm_noclipspeed = 300
pm_runspeed = 275
pm_walkspeed = 175
pm_crouchspeed = 100
missing 'stand' animation on 'char_marine_helmet_p90_1' (alphalabs2_marine_helmet_p90)
missing 'stand' animation on 'char_marine_helmet_p90_3' (alphalabs2_marine_helmet_p90)
missing 'stand' animation on 'char_marine_helmet_p90_2' (alphalabs2_marine_helmet_p90)
WARNING: rigid body in solid for entity 'moveable_explodingbarrel_1' type 'idExplodingBarrel' at (-2134 1684 -15)
WARNING: rigid body in solid for entity 'moveable_cokecan_5' type 'idMoveable' at (-2297 2312 234)
WARNING: rigid body in solid for entity 'moveable_explodingbarrel_2' type 'idExplodingBarrel' at (-2115 1641 -15)
----- idRenderModelManagerLocal::EndLevelLoad -----
    0 models purged from previous level,  1156 models kept.
---------------------------------------------------
----- idImageManager::EndLevelLoad -----
WARNING: Couldn't load image: _emptyname : _emptyname#__0200
   17 images loaded in   0.0 seconds
----------------------------------------
----- idSoundSystemLocal::EndLevelLoad -----
   37 sounds loaded in   0.1 seconds
----------------------------------------
----- Running initial game frames -----
WARNING: rigid body not at rest for entity 'moveable_explodingbarrel_3' type 'idExplodingBarrel' at (-2101 1595 -347)
----- Saving Game -----
Save time: 249ms
^1writing to: /home/biel/.rbdoom3bfg/base/savegame/GAME-autosave/gamedata.strings.temp
^1writing to: /home/biel/.rbdoom3bfg/base/savegame/GAME-autosave/gamedata.save.temp
^1writing to: /home/biel/.rbdoom3bfg/base/savegame/GAME-autosave/game.details.temp
----- Generating Interactions -----
idRenderWorld::GenerateAllInteractions, msec = 113
interactionTable size: 5456192 bytes
19160 interactions take 1379520 bytes
Used 22547kb of static vertex memory (71%)
Used 6463kb of static index memory (20%)
------------- Warnings ---------------
during game/alphalabs2...
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_2' at (-3060 1414 196) has no modified animation 'af_pose'
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_3' at (-3038 1484 196) has no modified animation 'af_pose'
WARNING: idAF::Load: articulated figure 'char_npc_base' for entity 'char_marine_helmet_p90_1' at (-3020 1382 196) has no modified animation 'af_pose'
WARNING: Joint 'Body' not found on 'alphalabs2_scientist1_1'
WARNING: Original Doom 3 RoQ Cinematic not found: 'sound/vo/video/mfs.roq'

WARNING: New filename: 'sound/vo/video/mfs.bik'

WARNING: idCinematic: Cannot open FFMPEG video file: 'sound/vo/video/mfs.bik', 0

WARNING: Original Doom 3 RoQ Cinematic not found: 'sound/VO/video/video_marine_sops.roq'

WARNING: New filename: 'sound/VO/video/video_marine_sops.bik'

WARNING: Loaded FFMPEG file: 'sound/VO/video/video_marine_sops.bik', looping=0

WARNING: 256x256, 30.000000 FPS, 2186.000000 sec
WARNING: Unknown stat 'desc' added to player's inventory
WARNING: Couldn't load image: _emptyname : _emptyname#__0200
13 warnings
TODO: Sys_SetPhysicalWorkMemory
  3888 msec to load game/alphalabs2
WARNING: Depth/stencil buffer needs alignment to 8-pixel boundaries.
Truncating offset, bad rendering may occur.
WARNING: Depth/stencil buffer needs alignment to 8-pixel boundaries.
Truncating offset, bad rendering may occur.
WARNING: idSessionLocal::Pump was not called for 12 seconds
WARNING: idSessionLocal::Pump was not called for 7 seconds
Unknown command '_button2'
WARNING: idSessionLocal::Pump was not called for 7 seconds
13.7 milliseconds for a single 'R_AddSingleModel' job from job list JOBLIST_RENDERER_FRONTEND on thread 0
13.0 milliseconds for a single 'R_AddSingleModel' job from job list JOBLIST_RENDERER_FRONTEND on thread 1
25.3 milliseconds for a single 'DynamicShadowVolumeJob' job from job list JOBLIST_RENDERER_FRONTEND on thread 0
40.1 milliseconds for a single 'DynamicShadowVolumeJob' job from job list JOBLIST_RENDERER_FRONTEND on thread 1
WARNING: idSessionLocal::Pump was not called for 7 seconds
WARNING: idSessionLocal::Pump was not called for 7 seconds
WARNING: idSessionLocal::Pump was not called for 9 seconds
WARNING: idSessionLocal::Pump was not called for 6 seconds
WARNING: idSessionLocal::Pump was not called for 7 seconds
WARNING: idSessionLocal::Pump was not called for 6 seconds
]quit
session->GetSaveGameManager().CancelToTerminate();
soundSystem->StopAllSounds();
Stop();
--------- Game Map Shutdown ----------
--------------------------------------
CleanupShell();
delete loadGUI;
delete renderWorld;
delete soundWorld;
delete menuSoundWorld;
session->ShutdownSoundRelatedSystems();
session->Shutdown();
game->Leaderboards_Shutdown();
uiManager->Shutdown();
soundSystem->Shutdown();
usercmdGen->Shutdown();
eventLoop->Shutdown();
declManager->Shutdown();
renderSystem->Shutdown();
idRenderSystem::Shutdown()
Shutting down OpenGL subsystem
commonDialog.Shutdown();
UnloadGameDLL();
------------ Game Shutdown -----------
--------- Game Map Shutdown ----------
--------------------------------------
Shutdown event system
--------------------------------------
saveFile.Clear( true );
stringsFile.Clear( true );
CloseLogFile();
fileSystem->Shutdown( false );
Sys_Shutdown();
console->Shutdown();
idKeyInput::Shutdown();
cvarSystem->Shutdown();
cmdSystem->Shutdown();
ClearWarnings( GAME_NAME " shutdown" );
warningCaption.Clear();
errorList.Clear();
idLib::ShutDown();
shutdown terminal support
RobertBeckebans commented 10 years ago

LOL it takes 6 seconds to render one frame with shadow mapping and Intel HD 3000 ... I'm going to disable shadow mapping for Mesa.

BielBdeLuna commented 10 years ago

agh! goddamnit! is there any low budget shadow mapping that could be set-up for the lowest of the low computer crap like mine? :-)

DanielGibson commented 10 years ago

You could probably try to play with the r_shadowMap* CVars, but in the end I doubt that you'd end up with something that looks better than the old stencil shadows ;)

BielBdeLuna commented 10 years ago

Ok, I see. so I guess I'll do the development with stencil shadows and treat the shadow-mapping as an "advanced effect". shadow-wise I will see the trees naked like in the winter and the rest of the people will see the trees fully blossomed :)

could at least have the stencil shadow a change?, a CVAR (r_stencilShadowParallelDistance) that controls the distance at which shadows cease to be calculated specifically for parallel lights, so that we could have large maps illuminated by a single "sun" parallel light and not kill off the refresh rate, so all is done as in normal idtech4 but the parallel shadows are stop being rendered at "n" distance. this could be seen as a chap replacement for the cascaded shadows ala stencil shadows.