Added 15-shadowmaps-simple and 16-shadowmaps.

This commit is contained in:
Dario Manesku 2013-12-11 04:37:51 +01:00
parent c01085856c
commit 5594e9af8c
133 changed files with 22734 additions and 16 deletions

View File

@ -0,0 +1,96 @@
$input v_view, v_normal, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_lightPos;
SAMPLER2D(u_shadowMap, 4);
vec2 lit(vec3 _ld, vec3 _n, vec3 _vd, float _exp)
{
//diff
float ndotl = dot(_n, _ld);
//spec
vec3 r = 2.0*ndotl*_n - _ld; //reflect(_ld, _n);
float rdotv = dot(r, _vd);
float spec = step(0.0, ndotl) * pow(max(0.0, rdotv), _exp) * (2.0 + _exp)/8.0;
return max(vec2(ndotl, spec), 0.0);
}
float hardShadow(sampler2D _sampler, vec4 _shadowCoord, float _bias)
{
vec2 texCoord = _shadowCoord.xy/_shadowCoord.w;
bool outside = any(greaterThan(texCoord, vec2_splat(1.0)))
|| any(lessThan (texCoord, vec2_splat(0.0)))
;
if (outside)
{
return 1.0;
}
float receiver = (_shadowCoord.z-_bias)/_shadowCoord.w;
float occluder = unpackRgbaToFloat(texture2D(_sampler, texCoord) );
float visibility = step(receiver, occluder);
return visibility;
}
float PCF(sampler2D _sampler, vec4 _shadowCoord, float _bias, vec2 _texelSize)
{
float result = 0.0;
vec2 offset = _texelSize * _shadowCoord.w;
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 1.5) * offset, 0.0, 0.0), _bias);
return result / 16.0;
}
void main()
{
const float shadowMapBias = 0.005;
const vec3 color = vec3_splat(1.0);
vec3 v = v_view;
vec3 vd = -normalize(v);
vec3 n = v_normal;
vec3 l = u_lightPos.xyz;
vec3 ld = -normalize(l);
vec2 lc = lit(ld, n, vd, 1.0);
vec2 texelSize = vec2_splat(1.0/512.0);
float visibility = PCF(u_shadowMap, v_shadowcoord, shadowMapBias, texelSize);
vec3 ambient = 0.1 * color;
vec3 brdf = (lc.x + lc.y) * color * visibility;
vec3 final = toGamma(abs(ambient + brdf) );
gl_FragColor.xyz = final;
gl_FragColor.w = 1.0;
}

View File

@ -0,0 +1,15 @@
$input v_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
float depth = v_position.z/v_position.w * 0.5 + 0.5;
gl_FragColor = packFloatToRgba(depth);
}

View File

@ -0,0 +1,934 @@
# Blender v2.66 (sub 1) OBJ File: ''
# www.blender.org
g holeycube
v 1.500000 1.211657 0.000000
v 1.500000 1.211656 1.209338
v 1.236416 1.211656 1.209338
v 1.236416 1.211657 0.000000
v 1.500000 1.500000 0.000000
v 1.500000 1.500000 1.209338
v 1.236416 1.500000 1.209338
v 1.236416 1.500000 0.000000
v 1.500000 -0.000000 1.209337
v 1.500000 -1.211657 1.209337
v 1.236416 -1.211657 1.209337
v 1.236416 -0.000000 1.209337
v 1.236416 -0.000000 1.500000
v 1.236416 -1.211657 1.500000
v 1.500000 -1.211657 1.500000
v 1.500000 -0.000000 1.500000
v 1.500000 0.000000 -1.500000
v 1.500000 -1.211656 -1.500000
v 1.236416 -1.211656 -1.500000
v 1.236416 0.000000 -1.500000
v -1.236416 0.000000 -1.500000
v -1.236416 -1.211656 -1.500000
v -1.500000 -1.211656 -1.500000
v -1.500000 0.000000 -1.500000
v -1.500000 -0.000000 1.500000
v -1.500000 -1.211657 1.500000
v -1.236416 -1.211657 1.500000
v -1.236416 -0.000000 1.500000
v -1.236416 -0.000000 1.209337
v -1.236416 -1.211657 1.209337
v -1.500000 -1.211657 1.209337
v -1.500000 -0.000000 1.209337
v -1.500000 1.211656 1.500000
v -1.500000 1.211656 1.209338
v -1.236416 1.211656 1.209338
v -1.236416 1.211656 1.500000
v -1.500000 1.211657 -1.500000
v -1.236416 1.211657 -1.500000
v 1.236416 1.211657 -1.500000
v 1.500000 1.211657 -1.500000
v 1.500000 1.211656 1.500000
v 1.236416 1.211656 1.500000
v 0.000000 -1.500000 1.209337
v -1.236416 -1.500000 1.209337
v 0.000000 -1.211657 1.209337
v 0.000000 1.211656 1.209338
v -1.236416 1.500000 1.209338
v 0.000000 1.500000 1.209338
v -1.236416 1.500000 1.500000
v 0.000000 1.500000 1.500000
v 0.000000 1.211656 1.500000
v 1.236416 1.500000 1.500000
v -1.500000 1.500000 1.500000
v 1.500000 1.500000 1.500000
v 0.000000 -1.500000 -1.500000
v -1.236416 -1.500000 -1.500000
v 0.000000 -1.211656 -1.500000
v 0.000000 -1.500000 -1.209338
v -1.236416 -1.500000 -1.209338
v 1.236416 -1.211657 -0.000000
v 1.236416 -1.211656 -1.209338
v 1.236416 -1.500000 -1.209338
v 1.236416 -1.500000 -0.000000
v 1.500000 -1.500000 -0.000000
v 1.500000 -1.500000 -1.209338
v 1.500000 -1.211656 -1.209338
v 1.500000 -1.211657 -0.000000
v 1.500000 -1.500000 1.209337
v 1.236416 -1.500000 1.209337
v -1.236416 -1.500000 -0.000000
v -1.500000 -1.500000 1.209337
v -1.500000 -1.500000 -0.000000
v -1.500000 -1.500000 -1.209338
v -1.236416 -1.211657 -0.000000
v -1.236416 -1.211656 -1.209338
v -1.500000 -1.211656 -1.209338
v -1.500000 -1.211657 -0.000000
v -1.500000 1.211657 0.000000
v -1.500000 1.211657 -1.209337
v -1.236416 1.211657 -1.209337
v -1.236416 1.211657 0.000000
v -1.236416 1.500000 0.000000
v -1.236416 1.500000 -1.209337
v -1.500000 1.500000 -1.209337
v -1.500000 1.500000 0.000000
v -1.500000 1.500000 1.209338
v 1.500000 1.500000 -1.209337
v 1.236416 1.500000 -1.209337
v 1.236416 1.211657 -1.209337
v 1.500000 1.211657 -1.209337
v 1.236416 0.000000 -1.209337
v 1.500000 0.000000 -1.209337
v -1.500000 0.000000 -1.209337
v -1.236416 0.000000 -1.209337
v 0.000000 -1.211656 -1.209338
v 0.000000 1.211657 -1.209337
v 0.000000 1.211657 -1.500000
v 0.000000 1.500000 -1.209337
v 0.000000 1.500000 -1.500000
v -1.236416 1.500000 -1.500000
v 1.236416 1.500000 -1.500000
v -1.500000 1.500000 -1.500000
v 1.500000 1.500000 -1.500000
v -1.500000 -1.500000 1.500000
v -1.236416 -1.500000 1.500000
v 0.000000 -1.211657 1.500000
v -1.500000 -1.500000 -1.500000
v 0.000000 -1.500000 1.500000
v 1.236416 -1.500000 1.500000
v 1.500000 -1.500000 1.500000
v 1.236416 -1.500000 -1.500000
v 1.500000 -1.500000 -1.500000
v 1.500000 1.500000 0.000000
v 1.500000 1.500000 1.209338
v 1.236416 1.500000 1.209338
v 1.236416 1.500000 0.000000
v -1.236416 1.500000 1.209338
v 0.000000 1.500000 1.209338
v -1.236416 1.500000 1.500000
v 0.000000 1.500000 1.500000
v 1.236416 1.500000 1.500000
v -1.500000 1.500000 1.500000
v 1.500000 1.500000 1.500000
v -1.236416 1.500000 0.000000
v -1.236416 1.500000 -1.209337
v -1.500000 1.500000 -1.209337
v -1.500000 1.500000 0.000000
v -1.500000 1.500000 1.209338
v 1.500000 1.500000 -1.209337
v 1.236416 1.500000 -1.209337
v 0.000000 1.500000 -1.209337
v 0.000000 1.500000 -1.500000
v -1.236416 1.500000 -1.500000
v 1.236416 1.500000 -1.500000
v -1.500000 1.500000 -1.500000
v 1.500000 1.500000 -1.500000
v 0.000000 -1.500000 1.209337
v 0.000000 -1.211657 1.209337
v 0.000000 -1.211657 1.500000
v 0.000000 -1.500000 1.500000
v 1.236416 -1.211657 1.209337
v -1.236416 -1.211657 1.209337
v 0.000000 -1.211657 1.209337
vn 0.000000 -1.000000 -0.000001
vn 1.000000 0.000000 0.000000
vn -1.000000 -0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 0.000001 -1.000000
vn 0.000000 0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000001
vn 0.000000 -0.000001 1.000000
vn 0.000000 1.000000 0.000000
s off
f 1//1 2//1 3//1 4//1
f 2//2 1//2 5//2 6//2
f 4//3 3//3 7//3 8//3
f 9//4 10//4 11//4 12//4
f 13//5 14//5 15//5 16//5
f 17//4 18//4 19//4 20//4
f 21//4 22//4 23//4 24//4
f 25//5 26//5 27//5 28//5
f 29//4 30//4 31//4 32//4
f 32//3 31//3 26//3 25//3
f 25//3 33//3 34//3 32//3
f 32//6 34//6 35//6 29//6
f 28//5 36//5 33//5 25//5
f 24//4 37//4 38//4 21//4
f 20//4 39//4 40//4 17//4
f 16//5 41//5 42//5 13//5
f 12//6 3//6 2//6 9//6
f 9//2 2//2 41//2 16//2
f 13//3 42//3 3//3 12//3
f 43//4 44//4 30//4 45//4
f 46//4 35//4 47//4 48//4
f 99//7 100//7 133//7 132//7
f 50//5 49//5 36//5 51//5
f 51//5 42//5 52//5 50//5
f 100//7 102//7 135//7 133//7
f 48//4 7//4 3//4 46//4
f 46//8 3//8 42//8 51//8
f 49//5 53//5 33//5 36//5
f 42//5 41//5 54//5 52//5
f 86//7 53//7 122//7 128//7
f 41//2 2//2 6//2 54//2
f 55//4 56//4 22//4 57//4
f 58//8 59//8 56//8 55//8
f 60//3 61//3 62//3 63//3
f 64//2 65//2 66//2 67//2
f 67//9 66//9 61//9 60//9
f 63//8 62//8 65//8 64//8
f 64//8 68//8 69//8 63//8
f 70//8 44//8 71//8 72//8
f 72//8 73//8 59//8 70//8
f 74//9 75//9 76//9 77//9
f 78//8 79//8 80//8 81//8
f 5//7 87//7 129//7 113//7
f 54//7 6//7 114//7 123//7
f 48//7 47//7 117//7 118//7
f 87//7 103//7 136//7 129//7
f 90//8 1//8 4//8 89//8
f 1//2 90//2 87//2 5//2
f 8//3 88//3 89//3 4//3
f 20//3 19//3 61//3 91//3
f 92//2 66//2 18//2 17//2
f 91//10 61//10 66//10 92//10
f 93//10 76//10 75//10 94//10
f 24//3 23//3 76//3 93//3
f 94//2 75//2 22//2 21//2
f 21//2 38//2 80//2 94//2
f 57//11 22//11 75//11 95//11
f 96//8 80//8 38//8 97//8
f 93//3 79//3 37//3 24//3
f 94//5 80//5 79//5 93//5
f 92//5 90//5 89//5 91//5
f 17//2 40//2 90//2 92//2
f 91//3 89//3 39//3 20//3
f 95//5 75//5 59//5 58//5
f 98//5 83//5 80//5 96//5
f 103//7 101//7 134//7 136//7
f 97//4 38//4 100//4 99//4
f 99//4 101//4 39//4 97//4
f 6//7 5//7 113//7 114//7
f 96//5 89//5 88//5 98//5
f 97//8 39//8 89//8 96//8
f 38//4 37//4 102//4 100//4
f 101//4 103//4 40//4 39//4
f 7//7 48//7 118//7 115//7
f 103//2 87//2 90//2 40//2
f 26//3 31//3 71//3 104//3
f 71//8 44//8 105//8 104//8
f 28//2 27//2 30//2 29//2
f 29//2 35//2 36//2 28//2
f 74//2 30//2 44//2 70//2
f 72//3 71//3 31//3 77//3
f 77//11 31//11 30//11 74//11
f 81//1 35//1 34//1 78//1
f 78//3 34//3 86//3 85//3
f 82//2 47//2 35//2 81//2
f 45//11 30//11 27//11 106//11
f 51//8 36//8 35//8 46//8
f 102//7 84//7 126//7 135//7
f 53//3 86//3 34//3 33//3
f 107//3 73//3 76//3 23//3
f 107//8 56//8 59//8 73//8
f 70//2 59//2 75//2 74//2
f 77//3 76//3 73//3 72//3
f 85//3 84//3 79//3 78//3
f 81//2 80//2 83//2 82//2
f 88//7 8//7 116//7 130//7
f 37//3 79//3 84//3 102//3
f 60//11 11//11 10//11 67//11
f 67//2 10//2 68//2 64//2
f 63//3 69//3 11//3 60//3
f 16//2 15//2 10//2 9//2
f 12//3 11//3 14//3 13//3
f 108//8 105//8 44//8 43//8
f 106//5 27//5 105//5 108//5
f 108//5 109//5 14//5 106//5
f 43//8 69//8 109//8 108//8
f 45//4 11//4 69//4 43//4
f 106//11 14//11 11//11 45//11
f 27//5 26//5 104//5 105//5
f 109//5 110//5 15//5 14//5
f 110//8 109//8 69//8 68//8
f 110//2 68//2 10//2 15//2
f 57//4 19//4 111//4 55//4
f 55//8 111//8 62//8 58//8
f 58//5 62//5 61//5 95//5
f 95//11 61//11 19//11 57//11
f 56//4 107//4 23//4 22//4
f 19//4 18//4 112//4 111//4
f 65//8 62//8 111//8 112//8
f 18//2 66//2 65//2 112//2
f 118//11 117//11 119//11 120//11
f 120//11 121//11 115//11 118//11
f 114//11 115//11 121//11 123//11
f 124//11 125//11 126//11 127//11
f 127//11 128//11 117//11 124//11
f 116//11 115//11 114//11 113//11
f 113//11 129//11 130//11 116//11
f 132//11 133//11 125//11 131//11
f 131//11 130//11 134//11 132//11
f 136//11 134//11 130//11 129//11
f 122//11 119//11 117//11 128//11
f 126//11 125//11 133//11 135//11
f 82//7 83//7 125//7 124//7
f 49//7 50//7 120//7 119//7
f 84//7 85//7 127//7 126//7
f 50//7 52//7 121//7 120//7
f 52//7 54//7 123//7 121//7
f 53//7 49//7 119//7 122//7
f 8//7 7//7 115//7 116//7
f 85//7 86//7 128//7 127//7
f 83//7 98//7 131//7 125//7
f 47//7 82//7 124//7 117//7
f 101//7 99//7 132//7 134//7
f 98//7 88//7 130//7 131//7
f 108//7 106//7 139//7 140//7
f 45//7 43//7 137//7 138//7
f 106//7 45//7 138//7 139//7
f 43//7 108//7 140//7 137//7
f 30//7 45//7 143//7 142//7
f 45//7 11//7 141//7 143//7
g holeycube.001
v 0.037848 0.053616 0.680965
v 0.414385 -0.152030 0.676229
v 0.382376 -0.209100 0.609416
v 0.005839 -0.003453 0.614153
v 0.003506 -0.010911 0.752536
v 0.380043 -0.216558 0.747800
v 0.348034 -0.273628 0.680987
v -0.028503 -0.067981 0.685724
v 0.558694 0.119124 0.375479
v 0.703003 0.390278 0.074730
v 0.670994 0.333208 0.007917
v 0.526685 0.062054 0.308667
v 0.617185 0.012627 0.307529
v 0.761494 0.283781 0.006779
v 0.793503 0.340851 0.073591
v 0.649194 0.069697 0.374341
v -0.284880 0.579845 0.386090
v -0.140571 0.850998 0.085340
v -0.172580 0.793929 0.018528
v -0.316889 0.522775 0.319277
v -0.617185 -0.012627 -0.307529
v -0.472876 0.258527 -0.608278
v -0.504885 0.201457 -0.675091
v -0.649194 -0.069697 -0.374341
v 0.284880 -0.579845 -0.386090
v 0.429189 -0.308690 -0.686840
v 0.461198 -0.251621 -0.620027
v 0.316889 -0.522775 -0.319277
v 0.226389 -0.473348 -0.318139
v 0.370698 -0.202194 -0.618889
v 0.338689 -0.259263 -0.685701
v 0.194380 -0.530418 -0.384952
v 0.140571 -0.850998 -0.085340
v 0.050071 -0.801571 -0.084202
v 0.082080 -0.744502 -0.017389
v 0.172580 -0.793929 -0.018528
v -0.793503 -0.340851 -0.073591
v -0.761494 -0.283781 -0.006779
v -0.461198 0.251621 0.620027
v -0.429189 0.308690 0.686840
v 0.504885 -0.201457 0.675091
v 0.472876 -0.258527 0.608278
v 0.555187 0.130035 -0.377057
v 0.405040 -0.137666 -0.690460
v 0.520846 0.065507 -0.305486
v 0.232228 -0.476801 0.296014
v 0.047738 -0.809030 0.054181
v 0.197886 -0.541329 0.367584
v 0.138238 -0.858457 0.053043
v 0.288386 -0.590756 0.366446
v 0.322728 -0.526228 0.294875
v 0.438534 -0.323055 0.679849
v 0.106229 -0.915526 -0.013769
v 0.470543 -0.265985 0.746662
v -0.288386 0.590756 -0.366446
v -0.438534 0.323055 -0.679849
v -0.322728 0.526228 -0.294875
v -0.197886 0.541329 -0.367584
v -0.348034 0.273628 -0.680987
v 0.294457 0.538855 0.012653
v -0.082080 0.744502 0.017389
v -0.047738 0.809030 -0.054181
v 0.328799 0.603383 -0.058918
v 0.360808 0.660452 0.007895
v -0.015729 0.866099 0.012631
v -0.050071 0.801571 0.084202
v 0.326466 0.595925 0.079466
v 0.737345 0.454805 0.003159
v 0.705335 0.397736 -0.063654
v 0.028503 0.067981 -0.685724
v 0.373030 -0.194736 -0.757272
v -0.003506 0.010911 -0.752536
v -0.380043 0.216558 -0.747800
v -0.005839 0.003453 -0.614153
v -0.382376 0.209100 -0.609416
v -0.414385 0.152030 -0.676229
v -0.037848 -0.053616 -0.680965
v -0.326466 -0.595925 -0.079466
v -0.703003 -0.390278 -0.074730
v -0.670994 -0.333208 -0.007917
v -0.294457 -0.538855 -0.012653
v -0.328799 -0.603383 0.058918
v -0.705335 -0.397736 0.063654
v -0.737345 -0.454805 -0.003159
v -0.360808 -0.660452 -0.007895
v 0.015729 -0.866099 -0.012631
v -0.373030 0.194736 0.757272
v -0.405040 0.137666 0.690460
v -0.370698 0.202194 0.618889
v -0.338689 0.259263 0.685701
v -0.226389 0.473348 0.318139
v -0.194380 0.530418 0.384952
v -0.558694 -0.119124 -0.375479
v -0.526685 -0.062054 -0.308667
v -0.232228 0.476801 -0.296014
v -0.520846 -0.065507 0.305486
v -0.611346 -0.016080 0.306624
v -0.555187 -0.130035 0.377057
v -0.645688 -0.080608 0.378195
v -0.795836 -0.348309 0.064792
v -0.495540 0.187093 0.691598
v -0.827845 -0.405378 -0.002021
v -0.463531 0.244163 0.758410
v 0.463531 -0.244163 -0.758410
v 0.495540 -0.187093 -0.691598
v 0.611346 0.016080 -0.306624
v -0.470543 0.265985 -0.746662
v 0.645688 0.080608 -0.378195
v 0.795836 0.348309 -0.064792
v 0.827845 0.405378 0.002021
v -0.138238 0.858457 -0.053043
v -0.106229 0.915526 0.013769
v 0.003506 -0.010911 0.752536
v 0.380043 -0.216558 0.747800
v 0.348034 -0.273628 0.680987
v -0.028503 -0.067981 0.685724
v 0.047738 -0.809030 0.054181
v 0.197886 -0.541329 0.367584
v 0.138238 -0.858457 0.053043
v 0.288386 -0.590756 0.366446
v 0.438534 -0.323055 0.679849
v 0.106229 -0.915526 -0.013769
v 0.470543 -0.265985 0.746662
v -0.328799 -0.603383 0.058918
v -0.705335 -0.397736 0.063654
v -0.737345 -0.454805 -0.003159
v -0.360808 -0.660452 -0.007895
v 0.015729 -0.866099 -0.012631
v -0.373030 0.194736 0.757272
v -0.405040 0.137666 0.690460
v -0.555187 -0.130035 0.377057
v -0.645688 -0.080608 0.378195
v -0.795836 -0.348309 0.064792
v -0.495540 0.187093 0.691598
v -0.827845 -0.405378 -0.002021
v -0.463531 0.244163 0.758410
v 0.555187 0.130035 -0.377057
v 0.520846 0.065507 -0.305486
v 0.611346 0.016080 -0.306624
v 0.645688 0.080608 -0.378195
v 0.670994 0.333208 0.007917
v 0.370698 -0.202194 -0.618889
v 0.520846 0.065507 -0.305486
vn 0.335692 0.630762 -0.699607
vn 0.342281 0.610259 0.714442
vn -0.342282 -0.610259 -0.714442
vn -0.877584 0.479296 0.011038
vn 0.877584 -0.479296 -0.011038
vn -0.877584 0.479295 0.011038
vn -0.342281 -0.610259 -0.714442
vn -0.877584 0.479295 0.011039
vn 0.877584 -0.479295 -0.011038
vn 0.335693 0.630761 -0.699607
vn -0.335692 -0.630762 0.699607
vn 0.342282 0.610259 0.714442
vn 0.877584 -0.479295 -0.011039
vn -0.335693 -0.630761 0.699607
vn -0.877584 0.479296 0.011039
vn 0.335693 0.630761 -0.699608
vn 0.877584 -0.479296 -0.011039
vn -0.335693 -0.630761 0.699608
s off
f 144//12 145//12 146//12 147//12
f 145//13 144//13 148//13 149//13
f 147//14 146//14 150//14 151//14
f 152//15 153//15 154//15 155//15
f 156//16 157//16 158//16 159//16
f 160//15 161//15 162//15 163//15
f 164//17 165//17 166//17 167//17
f 168//16 169//16 170//16 171//16
f 172//15 173//15 174//15 175//15
f 175//18 174//18 169//18 168//18
f 168//14 176//14 177//14 175//14
f 175//19 177//19 178//19 172//19
f 171//16 179//16 176//16 168//16
f 167//15 180//15 181//15 164//15
f 163//15 182//15 183//15 160//15
f 159//20 184//20 185//20 156//20
f 155//19 146//19 145//19 152//19
f 152//13 145//13 184//13 159//13
f 156//18 185//18 146//18 155//18
f 186//15 187//15 173//15 188//15
f 189//15 178//15 190//15 191//15
f 242//7 243//7 276//7 275//7
f 193//16 192//16 179//16 194//16
f 194//16 185//16 195//16 193//16
f 243//7 245//7 278//7 276//7
f 191//15 150//15 146//15 189//15
f 189//21 146//21 185//21 194//21
f 192//16 196//16 176//16 179//16
f 185//16 184//16 197//16 195//16
f 229//7 196//7 265//7 271//7
f 184//13 145//13 149//13 197//13
f 198//15 199//15 165//15 200//15
f 201//21 202//21 199//21 198//21
f 203//18 204//18 205//18 206//18
f 207//13 208//13 209//13 210//13
f 210//22 209//22 204//22 203//22
f 206//21 205//21 208//21 207//21
f 207//21 211//21 212//21 206//21
f 213//21 187//21 214//21 215//21
f 215//21 216//21 202//21 213//21
f 217//22 218//22 219//22 220//22
f 221//21 222//21 223//21 224//21
f 148//7 230//7 272//7 256//7
f 197//7 149//7 257//7 266//7
f 191//7 190//7 260//7 261//7
f 230//7 246//7 279//7 272//7
f 233//21 144//21 147//21 232//21
f 144//13 233//13 230//13 148//13
f 151//14 231//14 232//14 147//14
f 163//18 162//18 204//18 234//18
f 235//23 209//23 161//23 160//23
f 234//24 204//24 209//24 235//24
f 236//24 219//24 218//24 237//24
f 167//18 166//18 219//18 236//18
f 237//13 218//13 165//13 164//13
f 164//13 181//13 223//13 237//13
f 200//25 165//25 218//25 238//25
f 239//21 223//21 181//21 240//21
f 236//14 222//14 180//14 167//14
f 237//16 223//16 222//16 236//16
f 235//16 233//16 232//16 234//16
f 160//13 183//13 233//13 235//13
f 234//18 232//18 182//18 163//18
f 238//16 218//16 202//16 201//16
f 241//16 226//16 223//16 239//16
f 246//7 244//7 277//7 279//7
f 240//15 181//15 243//15 242//15
f 242//15 244//15 182//15 240//15
f 149//7 148//7 256//7 257//7
f 239//16 232//16 231//16 241//16
f 240//21 182//21 232//21 239//21
f 181//26 180//26 245//26 243//26
f 244//15 246//15 183//15 182//15
f 150//7 191//7 261//7 258//7
f 246//13 230//13 233//13 183//13
f 169//18 174//18 214//18 247//18
f 214//21 187//21 248//21 247//21
f 171//13 170//13 173//13 172//13
f 172//13 178//13 179//13 171//13
f 217//23 173//23 187//23 213//23
f 215//18 214//18 174//18 220//18
f 220//25 174//25 173//25 217//25
f 224//12 178//12 177//12 221//12
f 221//18 177//18 229//18 228//18
f 225//13 190//13 178//13 224//13
f 188//25 173//25 170//25 249//25
f 194//21 179//21 178//21 189//21
f 245//7 227//7 269//7 278//7
f 196//14 229//14 177//14 176//14
f 250//18 216//18 219//18 166//18
f 250//27 199//27 202//27 216//27
f 213//23 202//23 218//23 217//23
f 220//18 219//18 216//18 215//18
f 228//18 227//18 222//18 221//18
f 224//13 223//13 226//13 225//13
f 231//7 151//7 259//7 273//7
f 180//14 222//14 227//14 245//14
f 203//25 154//25 153//25 210//25
f 210//13 153//13 211//13 207//13
f 206//18 212//18 154//18 203//18
f 159//23 158//23 153//23 152//23
f 155//18 154//18 157//18 156//18
f 251//21 248//21 187//21 186//21
f 249//16 170//16 248//16 251//16
f 251//16 252//16 157//16 249//16
f 186//21 212//21 252//21 251//21
f 188//15 154//15 212//15 186//15
f 249//25 157//25 154//25 188//25
f 170//16 169//16 247//16 248//16
f 252//28 253//28 158//28 157//28
f 253//21 252//21 212//21 211//21
f 253//23 211//23 153//23 158//23
f 200//15 162//15 254//15 198//15
f 198//21 254//21 205//21 201//21
f 201//16 205//16 204//16 238//16
f 238//25 204//25 162//25 200//25
f 199//15 250//15 166//15 165//15
f 162//15 161//15 255//15 254//15
f 208//21 205//21 254//21 255//21
f 161//23 209//23 208//23 255//23
f 261//25 260//25 262//25 263//25
f 263//25 264//25 258//25 261//25
f 257//29 258//29 264//29 266//29
f 267//25 268//25 269//25 270//25
f 270//25 271//25 260//25 267//25
f 259//25 258//25 257//25 256//25
f 256//25 272//25 273//25 259//25
f 275//25 276//25 268//25 274//25
f 274//25 273//25 277//25 275//25
f 279//25 277//25 273//25 272//25
f 265//25 262//25 260//25 271//25
f 269//25 268//25 276//25 278//25
f 225//7 226//7 268//7 267//7
f 192//7 193//7 263//7 262//7
f 227//7 228//7 270//7 269//7
f 193//7 195//7 264//7 263//7
f 195//7 197//7 266//7 264//7
f 196//7 192//7 262//7 265//7
f 151//7 150//7 258//7 259//7
f 228//7 229//7 271//7 270//7
f 226//7 241//7 274//7 268//7
f 190//7 225//7 267//7 260//7
f 244//7 242//7 275//7 277//7
f 241//7 231//7 273//7 274//7
f 251//7 249//7 282//7 283//7
f 188//7 186//7 280//7 281//7
f 249//7 188//7 281//7 282//7
f 186//7 251//7 283//7 280//7
f 173//7 188//7 286//7 285//7
f 188//7 154//7 284//7 286//7
g holeycube.002
v 0.369385 2.003562 1.792544
v 0.963329 0.880686 2.925211
v 0.707927 0.635014 2.815589
v 0.113983 1.757890 1.682922
v 0.111409 2.147654 2.070667
v 0.705351 1.024778 3.203335
v 0.449950 0.779106 3.093713
v -0.143993 1.901982 1.961045
v 2.047380 0.275193 1.756502
v 3.131433 -0.330301 0.587792
v 2.876031 -0.575973 0.478171
v 1.791978 0.029521 1.646880
v 1.934732 -0.240361 1.919116
v 3.018785 -0.845855 0.750406
v 3.274187 -0.600183 0.860028
v 2.190134 0.005311 2.028738
v 0.716742 2.790825 -0.781068
v 1.800794 2.185331 -1.949777
v 1.545392 1.939659 -2.059399
v 0.461340 2.545153 -0.890690
v -1.934732 0.240361 -1.919116
v -0.850680 -0.365133 -3.087824
v -1.106082 -0.610805 -3.197446
v -2.190134 -0.005311 -2.028738
v -0.716742 -2.790825 0.781068
v 0.367311 -3.396319 -0.387641
v 0.622713 -3.150647 -0.278019
v -0.461340 -2.545153 0.890690
v -0.604093 -2.275271 0.618455
v 0.479959 -2.880765 -0.550255
v 0.224557 -3.126437 -0.659877
v -0.859495 -2.520943 0.508833
v -1.800794 -2.185331 1.949777
v -1.943547 -1.915450 1.677542
v -1.688145 -1.669778 1.787164
v -1.545392 -1.939659 2.059399
v -3.274187 0.600183 -0.860028
v -3.018785 0.845855 -0.750406
v -0.622713 3.150647 0.278019
v -0.367311 3.396319 0.387641
v 1.106082 0.610805 3.197446
v 0.850680 0.365133 3.087824
v 1.935972 -1.872461 -0.314165
v 0.737936 -3.024857 -0.828377
v 1.677995 -1.728369 -0.036042
v -0.490109 -0.517382 2.301377
v -1.946122 -1.525685 2.065288
v -0.748086 -0.373290 2.579500
v -1.803369 -1.795566 2.337522
v -0.605333 -0.643171 2.851735
v -0.347356 -0.787263 2.573611
v 0.592703 0.509225 3.365948
v -2.058771 -2.041239 2.227901
v 0.848105 0.754897 3.475569
v 0.605333 0.643171 -2.851735
v -0.592703 -0.509225 -3.365948
v 0.347356 0.787263 -2.573611
v 0.748086 0.373290 -2.579500
v -0.449950 -0.779106 -3.093713
v 2.282089 0.546902 -0.654497
v 1.688145 1.669778 -1.787164
v 1.946122 1.525685 -2.065288
v 2.540065 0.402810 -0.932619
v 2.795467 0.648482 -0.822998
v 2.201524 1.771358 -1.955666
v 1.943547 1.915450 -1.677542
v 2.537491 0.792574 -0.544875
v 3.389409 -0.474393 0.309670
v 3.134007 -0.720065 0.200048
v 0.143993 -1.901982 -1.961045
v 0.482534 -3.270529 -0.937999
v -0.111409 -2.147654 -2.070667
v -0.705351 -1.024778 -3.203335
v -0.113983 -1.757890 -1.682922
v -0.707927 -0.635014 -2.815589
v -0.963329 -0.880686 -2.925211
v -0.369385 -2.003562 -1.792544
v -2.537491 -0.792574 0.544875
v -3.131433 0.330301 -0.587792
v -2.876031 0.575973 -0.478171
v -2.282089 -0.546902 0.654497
v -2.540065 -0.402810 0.932619
v -3.134007 0.720065 -0.200048
v -3.389409 0.474393 -0.309670
v -2.795467 -0.648482 0.822998
v -2.201524 -1.771358 1.955666
v -0.482534 3.270529 0.937999
v -0.737936 3.024857 0.828377
v -0.479959 2.880765 0.550255
v -0.224557 3.126437 0.659877
v 0.604093 2.275271 -0.618455
v 0.859495 2.520943 -0.508833
v -2.047380 -0.275193 -1.756502
v -1.791978 -0.029521 -1.646880
v 0.490109 0.517382 -2.301377
v -1.677995 1.728369 0.036042
v -1.820749 1.998251 -0.236193
v -1.935972 1.872461 0.314165
v -2.078725 2.142343 0.041929
v -3.276761 0.989947 -0.472284
v -0.880689 3.294739 0.556142
v -3.532163 0.744275 -0.581905
v -0.625287 3.540411 0.665764
v 0.625287 -3.540411 -0.665764
v 0.880689 -3.294739 -0.556142
v 1.820749 -1.998251 0.236193
v -0.848105 -0.754897 -3.475569
v 2.078725 -2.142343 -0.041929
v 3.276761 -0.989947 0.472284
v 3.532163 -0.744275 0.581905
v 1.803369 1.795566 -2.337522
v 2.058771 2.041239 -2.227901
v 0.111409 2.147654 2.070667
v 0.705351 1.024778 3.203335
v 0.449950 0.779106 3.093713
v -0.143993 1.901982 1.961045
v -1.946122 -1.525685 2.065288
v -0.748086 -0.373290 2.579500
v -1.803369 -1.795566 2.337522
v -0.605333 -0.643171 2.851735
v 0.592703 0.509225 3.365948
v -2.058771 -2.041239 2.227901
v 0.848105 0.754897 3.475569
v -2.540065 -0.402810 0.932619
v -3.134007 0.720065 -0.200048
v -3.389409 0.474393 -0.309670
v -2.795467 -0.648482 0.822998
v -2.201524 -1.771358 1.955666
v -0.482534 3.270529 0.937999
v -0.737936 3.024857 0.828377
v -1.935972 1.872461 0.314165
v -2.078725 2.142343 0.041929
v -3.276761 0.989947 -0.472284
v -0.880689 3.294739 0.556142
v -3.532163 0.744275 -0.581905
v -0.625287 3.540411 0.665764
v 1.935972 -1.872461 -0.314165
v 1.677995 -1.728369 -0.036042
v 1.820749 -1.998251 0.236193
v 2.078725 -2.142343 -0.041929
v 2.876031 -0.575973 0.478171
v 0.479959 -2.880765 -0.550255
v 1.677995 -1.728369 -0.036042
vn 0.635737 -0.355088 -0.685384
vn 0.688513 0.662283 0.295519
vn -0.688513 -0.662283 -0.295518
vn -0.348983 0.659767 -0.665521
vn 0.348982 -0.659767 0.665521
vn -0.348982 0.659767 -0.665521
vn 0.348982 -0.659768 0.665521
vn -0.688513 -0.662283 -0.295519
vn 0.348983 -0.659767 0.665521
vn -0.348982 0.659768 -0.665521
vn 0.688513 0.662283 0.295518
vn 0.635737 -0.355089 -0.685383
vn -0.635737 0.355088 0.685384
vn 0.688512 0.662283 0.295519
vn -0.635737 0.355089 0.685383
vn -0.688512 -0.662283 -0.295519
vn 0.635737 -0.355089 -0.685384
vn -0.635737 0.355089 0.685384
s off
f 287//30 288//30 289//30 290//30
f 288//31 287//31 291//31 292//31
f 290//32 289//32 293//32 294//32
f 295//33 296//33 297//33 298//33
f 299//34 300//34 301//34 302//34
f 303//33 304//33 305//33 306//33
f 307//35 308//35 309//35 310//35
f 311//36 312//36 313//36 314//36
f 315//35 316//35 317//35 318//35
f 318//37 317//37 312//37 311//37
f 311//37 319//37 320//37 318//37
f 318//33 320//33 321//33 315//33
f 314//38 322//38 319//38 311//38
f 310//35 323//35 324//35 307//35
f 306//39 325//39 326//39 303//39
f 302//34 327//34 328//34 299//34
f 298//33 289//33 288//33 295//33
f 295//40 288//40 327//40 302//40
f 299//37 328//37 289//37 298//37
f 329//33 330//33 316//33 331//33
f 332//33 321//33 333//33 334//33
f 385//7 386//7 419//7 418//7
f 336//38 335//38 322//38 337//38
f 337//38 328//38 338//38 336//38
f 386//7 388//7 421//7 419//7
f 334//33 293//33 289//33 332//33
f 332//41 289//41 328//41 337//41
f 335//38 339//38 319//38 322//38
f 328//38 327//38 340//38 338//38
f 372//7 339//7 408//7 414//7
f 327//31 288//31 292//31 340//31
f 341//33 342//33 308//33 343//33
f 344//41 345//41 342//41 341//41
f 346//32 347//32 348//32 349//32
f 350//40 351//40 352//40 353//40
f 353//42 352//42 347//42 346//42
f 349//41 348//41 351//41 350//41
f 350//41 354//41 355//41 349//41
f 356//41 330//41 357//41 358//41
f 358//41 359//41 345//41 356//41
f 360//42 361//42 362//42 363//42
f 364//41 365//41 366//41 367//41
f 291//7 373//7 415//7 399//7
f 340//7 292//7 400//7 409//7
f 334//7 333//7 403//7 404//7
f 373//7 389//7 422//7 415//7
f 376//41 287//41 290//41 375//41
f 287//43 376//43 373//43 291//43
f 294//37 374//37 375//37 290//37
f 306//37 305//37 347//37 377//37
f 378//31 352//31 304//31 303//31
f 377//38 347//38 352//38 378//38
f 379//38 362//38 361//38 380//38
f 310//32 309//32 362//32 379//32
f 380//31 361//31 308//31 307//31
f 307//31 324//31 366//31 380//31
f 343//44 308//44 361//44 381//44
f 382//41 366//41 324//41 383//41
f 379//32 365//32 323//32 310//32
f 380//38 366//38 365//38 379//38
f 378//34 376//34 375//34 377//34
f 303//31 326//31 376//31 378//31
f 377//37 375//37 325//37 306//37
f 381//38 361//38 345//38 344//38
f 384//38 369//38 366//38 382//38
f 389//7 387//7 420//7 422//7
f 383//33 324//33 386//33 385//33
f 385//33 387//33 325//33 383//33
f 292//7 291//7 399//7 400//7
f 382//38 375//38 374//38 384//38
f 383//41 325//41 375//41 382//41
f 324//33 323//33 388//33 386//33
f 387//35 389//35 326//35 325//35
f 293//7 334//7 404//7 401//7
f 389//43 373//43 376//43 326//43
f 312//45 317//45 357//45 390//45
f 357//46 330//46 391//46 390//46
f 314//31 313//31 316//31 315//31
f 315//31 321//31 322//31 314//31
f 360//31 316//31 330//31 356//31
f 358//45 357//45 317//45 363//45
f 363//44 317//44 316//44 360//44
f 367//30 321//30 320//30 364//30
f 364//32 320//32 372//32 371//32
f 368//40 333//40 321//40 367//40
f 331//44 316//44 313//44 392//44
f 337//46 322//46 321//46 332//46
f 388//7 370//7 412//7 421//7
f 339//32 372//32 320//32 319//32
f 393//37 359//37 362//37 309//37
f 393//41 342//41 345//41 359//41
f 356//40 345//40 361//40 360//40
f 363//37 362//37 359//37 358//37
f 371//32 370//32 365//32 364//32
f 367//40 366//40 369//40 368//40
f 374//7 294//7 402//7 416//7
f 323//32 365//32 370//32 388//32
f 346//44 297//44 296//44 353//44
f 353//40 296//40 354//40 350//40
f 349//32 355//32 297//32 346//32
f 302//40 301//40 296//40 295//40
f 298//37 297//37 300//37 299//37
f 394//41 391//41 330//41 329//41
f 392//38 313//38 391//38 394//38
f 394//38 395//38 300//38 392//38
f 329//41 355//41 395//41 394//41
f 331//33 297//33 355//33 329//33
f 392//44 300//44 297//44 331//44
f 313//34 312//34 390//34 391//34
f 395//38 396//38 301//38 300//38
f 396//41 395//41 355//41 354//41
f 396//40 354//40 296//40 301//40
f 343//33 305//33 397//33 341//33
f 341//41 397//41 348//41 344//41
f 344//38 348//38 347//38 381//38
f 381//47 347//47 305//47 343//47
f 342//33 393//33 309//33 308//33
f 305//33 304//33 398//33 397//33
f 351//41 348//41 397//41 398//41
f 304//40 352//40 351//40 398//40
f 404//44 403//44 405//44 406//44
f 406//44 407//44 401//44 404//44
f 400//44 401//44 407//44 409//44
f 410//44 411//44 412//44 413//44
f 413//44 414//44 403//44 410//44
f 402//44 401//44 400//44 399//44
f 399//44 415//44 416//44 402//44
f 418//44 419//44 411//44 417//44
f 417//44 416//44 420//44 418//44
f 422//47 420//47 416//47 415//47
f 408//44 405//44 403//44 414//44
f 412//44 411//44 419//44 421//44
f 368//7 369//7 411//7 410//7
f 335//7 336//7 406//7 405//7
f 370//7 371//7 413//7 412//7
f 336//7 338//7 407//7 406//7
f 338//7 340//7 409//7 407//7
f 339//7 335//7 405//7 408//7
f 294//7 293//7 401//7 402//7
f 371//7 372//7 414//7 413//7
f 369//7 384//7 417//7 411//7
f 333//7 368//7 410//7 403//7
f 387//7 385//7 418//7 420//7
f 384//7 374//7 416//7 417//7
f 394//7 392//7 425//7 426//7
f 331//7 329//7 423//7 424//7
f 392//7 331//7 424//7 425//7
f 329//7 394//7 426//7 423//7
f 316//7 331//7 429//7 428//7
f 331//7 297//7 427//7 429//7

View File

@ -0,0 +1,22 @@
#
# Copyright 2013 Dario Manesku. All rights reserved.
# License: http://www.opensource.org/licenses/BSD-2-Clause
#
BGFX_DIR=../..
RUNTIME_DIR=$(BGFX_DIR)/examples/runtime
BUILD_DIR=../../.build
include $(BGFX_DIR)/premake/shader.mk
geometry: ../runtime/meshes/column.bin
../runtime/meshes/column.bin: column.obj
../../tools/bin/geometryc -f column.obj -o ../runtime/meshes/column.bin --packnormal 1
rebuild:
@make -s --no-print-directory TARGET=0 clean all
@make -s --no-print-directory TARGET=1 clean all
@make -s --no-print-directory TARGET=2 clean all
@make -s --no-print-directory TARGET=3 clean all
@make -s --no-print-directory TARGET=4 clean all

View File

@ -0,0 +1,670 @@
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include <string>
#include <vector>
#include <algorithm>
#include "common.h"
#include <bgfx.h>
#include <bx/timer.h>
#include <bx/readerwriter.h>
#include "entry/entry.h"
#include "fpumath.h"
#define RENDER_PASS_0 0
#define RENDER_PASS_1 1
uint32_t packUint32(uint8_t _x, uint8_t _y, uint8_t _z, uint8_t _w)
{
union
{
uint32_t ui32;
uint8_t arr[4];
} un;
un.arr[0] = _x;
un.arr[1] = _y;
un.arr[2] = _z;
un.arr[3] = _w;
return un.ui32;
}
uint32_t packF4u(float _x, float _y = 0.0f, float _z = 0.0f, float _w = 0.0f)
{
const uint8_t xx = uint8_t(_x*127.0f + 128.0f);
const uint8_t yy = uint8_t(_y*127.0f + 128.0f);
const uint8_t zz = uint8_t(_z*127.0f + 128.0f);
const uint8_t ww = uint8_t(_w*127.0f + 128.0f);
return packUint32(xx, yy, zz, ww);
}
struct PosNormalVertex
{
float m_x;
float m_y;
float m_z;
uint32_t m_normal;
};
static const float s_texcoord = 5.0f;
static const uint32_t s_numHPlaneVertices = 4;
static PosNormalVertex s_hplaneVertices[s_numHPlaneVertices] =
{
{ -1.0f, 0.0f, 1.0f, packF4u(0.0f, 1.0f, 0.0f) },
{ 1.0f, 0.0f, 1.0f, packF4u(0.0f, 1.0f, 0.0f) },
{ -1.0f, 0.0f, -1.0f, packF4u(0.0f, 1.0f, 0.0f) },
{ 1.0f, 0.0f, -1.0f, packF4u(0.0f, 1.0f, 0.0f) },
};
static const uint32_t s_numPlaneIndices = 6;
static const uint16_t s_planeIndices[s_numPlaneIndices] =
{
0, 1, 2,
1, 3, 2,
};
static const char* s_shaderPath = NULL;
static bool s_flipV = false;
static float s_texelHalf = 0.0f;
static bgfx::RenderTargetHandle s_rtShadowMap;
static bgfx::UniformHandle u_shadowMap;
static void shaderFilePath(char* _out, const char* _name)
{
strcpy(_out, s_shaderPath);
strcat(_out, _name);
strcat(_out, ".bin");
}
long int fsize(FILE* _file)
{
long int pos = ftell(_file);
fseek(_file, 0L, SEEK_END);
long int size = ftell(_file);
fseek(_file, pos, SEEK_SET);
return size;
}
static const bgfx::Memory* load(const char* _filePath)
{
FILE* file = fopen(_filePath, "rb");
if (NULL != file)
{
uint32_t size = (uint32_t)fsize(file);
const bgfx::Memory* mem = bgfx::alloc(size+1);
size_t ignore = fread(mem->data, 1, size, file);
BX_UNUSED(ignore);
fclose(file);
mem->data[mem->size-1] = '\0';
return mem;
}
return NULL;
}
static const bgfx::Memory* loadShader(const char* _name)
{
char filePath[512];
shaderFilePath(filePath, _name);
return load(filePath);
}
static bgfx::ProgramHandle loadProgram(const char* _vsName, const char* _fsName)
{
const bgfx::Memory* mem;
// Load vertex shader.
mem = loadShader(_vsName);
bgfx::VertexShaderHandle vsh = bgfx::createVertexShader(mem);
// Load fragment shader.
mem = loadShader(_fsName);
bgfx::FragmentShaderHandle fsh = bgfx::createFragmentShader(mem);
// Create program from shaders.
bgfx::ProgramHandle program = bgfx::createProgram(vsh, fsh);
// We can destroy vertex and fragment shader here since
// their reference is kept inside bgfx after calling createProgram.
// Vertex and fragment shader will be destroyed once program is
// destroyed.
bgfx::destroyVertexShader(vsh);
bgfx::destroyFragmentShader(fsh);
return program;
}
void mtxScaleRotateTranslate(float* _result
, const float _scaleX
, const float _scaleY
, const float _scaleZ
, const float _rotX
, const float _rotY
, const float _rotZ
, const float _translateX
, const float _translateY
, const float _translateZ
)
{
float mtxRotateTranslate[16];
float mtxScale[16];
mtxRotateXYZ(mtxRotateTranslate, _rotX, _rotY, _rotZ);
mtxRotateTranslate[12] = _translateX;
mtxRotateTranslate[13] = _translateY;
mtxRotateTranslate[14] = _translateZ;
memset(mtxScale, 0, sizeof(float)*16);
mtxScale[0] = _scaleX;
mtxScale[5] = _scaleY;
mtxScale[10] = _scaleZ;
mtxScale[15] = 1.0f;
mtxMul(_result, mtxScale, mtxRotateTranslate);
}
struct Aabb
{
float m_min[3];
float m_max[3];
};
struct Obb
{
float m_mtx[16];
};
struct Sphere
{
float m_center[3];
float m_radius;
};
struct Primitive
{
uint32_t m_startIndex;
uint32_t m_numIndices;
uint32_t m_startVertex;
uint32_t m_numVertices;
Sphere m_sphere;
Aabb m_aabb;
Obb m_obb;
};
typedef std::vector<Primitive> PrimitiveArray;
struct Group
{
Group()
{
reset();
}
void reset()
{
m_vbh.idx = bgfx::invalidHandle;
m_ibh.idx = bgfx::invalidHandle;
m_prims.clear();
}
bgfx::VertexBufferHandle m_vbh;
bgfx::IndexBufferHandle m_ibh;
Sphere m_sphere;
Aabb m_aabb;
Obb m_obb;
PrimitiveArray m_prims;
};
;
struct Mesh
{
void load(const void* _vertices, uint32_t _numVertices, const bgfx::VertexDecl _decl, const uint16_t* _indices, uint32_t _numIndices)
{
Group group;
const bgfx::Memory* mem;
uint32_t size;
size = _numVertices*_decl.getStride();
mem = bgfx::makeRef(_vertices, size);
group.m_vbh = bgfx::createVertexBuffer(mem, _decl);
size = _numIndices*2;
mem = bgfx::makeRef(_indices, size);
group.m_ibh = bgfx::createIndexBuffer(mem);
//TODO:
// group.m_sphere = ...
// group.m_aabb = ...
// group.m_obb = ...
// group.m_prims = ...
m_groups.push_back(group);
}
void load(const char* _filePath)
{
#define BGFX_CHUNK_MAGIC_VB BX_MAKEFOURCC('V', 'B', ' ', 0x0)
#define BGFX_CHUNK_MAGIC_IB BX_MAKEFOURCC('I', 'B', ' ', 0x0)
#define BGFX_CHUNK_MAGIC_PRI BX_MAKEFOURCC('P', 'R', 'I', 0x0)
bx::CrtFileReader reader;
reader.open(_filePath);
Group group;
uint32_t chunk;
while (4 == bx::read(&reader, chunk) )
{
switch (chunk)
{
case BGFX_CHUNK_MAGIC_VB:
{
bx::read(&reader, group.m_sphere);
bx::read(&reader, group.m_aabb);
bx::read(&reader, group.m_obb);
bx::read(&reader, m_decl);
uint16_t stride = m_decl.getStride();
uint16_t numVertices;
bx::read(&reader, numVertices);
const bgfx::Memory* mem = bgfx::alloc(numVertices*stride);
bx::read(&reader, mem->data, mem->size);
group.m_vbh = bgfx::createVertexBuffer(mem, m_decl);
}
break;
case BGFX_CHUNK_MAGIC_IB:
{
uint32_t numIndices;
bx::read(&reader, numIndices);
const bgfx::Memory* mem = bgfx::alloc(numIndices*2);
bx::read(&reader, mem->data, mem->size);
group.m_ibh = bgfx::createIndexBuffer(mem);
}
break;
case BGFX_CHUNK_MAGIC_PRI:
{
uint16_t len;
bx::read(&reader, len);
std::string material;
material.resize(len);
bx::read(&reader, const_cast<char*>(material.c_str() ), len);
uint16_t num;
bx::read(&reader, num);
for (uint32_t ii = 0; ii < num; ++ii)
{
bx::read(&reader, len);
std::string name;
name.resize(len);
bx::read(&reader, const_cast<char*>(name.c_str() ), len);
Primitive prim;
bx::read(&reader, prim.m_startIndex);
bx::read(&reader, prim.m_numIndices);
bx::read(&reader, prim.m_startVertex);
bx::read(&reader, prim.m_numVertices);
bx::read(&reader, prim.m_sphere);
bx::read(&reader, prim.m_aabb);
bx::read(&reader, prim.m_obb);
group.m_prims.push_back(prim);
}
m_groups.push_back(group);
group.reset();
}
break;
default:
DBG("%08x at %d", chunk, reader.seek() );
break;
}
}
reader.close();
}
void unload()
{
for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it)
{
const Group& group = *it;
bgfx::destroyVertexBuffer(group.m_vbh);
if (bgfx::isValid(group.m_ibh) )
{
bgfx::destroyIndexBuffer(group.m_ibh);
}
}
m_groups.clear();
}
void submit(uint8_t _view, float* _mtx, bgfx::ProgramHandle _program)
{
for (GroupArray::const_iterator it = m_groups.begin(), itEnd = m_groups.end(); it != itEnd; ++it)
{
const Group& group = *it;
// Set model matrix for rendering.
bgfx::setTransform(_mtx);
bgfx::setProgram(_program);
bgfx::setIndexBuffer(group.m_ibh);
bgfx::setVertexBuffer(group.m_vbh);
// Set shadow map.
bgfx::setTexture(4, u_shadowMap, s_rtShadowMap);
// Set render states.
bgfx::setState(0
|BGFX_STATE_RGB_WRITE
|BGFX_STATE_ALPHA_WRITE
|BGFX_STATE_DEPTH_WRITE
|BGFX_STATE_DEPTH_TEST_LESS
|BGFX_STATE_CULL_CCW
|BGFX_STATE_MSAA
);
// Submit primitive for rendering.
bgfx::submit(_view);
}
}
bgfx::VertexDecl m_decl;
typedef std::vector<Group> GroupArray;
GroupArray m_groups;
};
int _main_(int /*_argc*/, char** /*_argv*/)
{
uint32_t width = 1280;
uint32_t height = 720;
uint32_t debug = BGFX_DEBUG_TEXT;
uint32_t reset = BGFX_RESET_VSYNC;
bgfx::init();
bgfx::reset(width, height, reset);
// Enable debug text.
bgfx::setDebug(debug);
// Setup root path for binary shaders. Shader binaries are different
// for each renderer.
switch (bgfx::getRendererType() )
{
default:
case bgfx::RendererType::Direct3D9:
s_shaderPath = "shaders/dx9/";
s_texelHalf = 0.5f;
break;
case bgfx::RendererType::Direct3D11:
s_shaderPath = "shaders/dx11/";
break;
case bgfx::RendererType::OpenGL:
s_shaderPath = "shaders/glsl/";
s_flipV = true;
break;
case bgfx::RendererType::OpenGLES2:
case bgfx::RendererType::OpenGLES3:
s_shaderPath = "shaders/gles/";
s_flipV = true;
break;
}
// Uniforms.
u_shadowMap = bgfx::createUniform("u_shadowMap", bgfx::UniformType::Uniform1iv);
bgfx::UniformHandle u_lightPos = bgfx::createUniform("u_lightPos", bgfx::UniformType::Uniform4fv);
bgfx::UniformHandle u_lightMtx = bgfx::createUniform("u_lightMtx", bgfx::UniformType::Uniform4x4fv);
// Programs.
bgfx::ProgramHandle progPackDepth = loadProgram("vs_smsimple_packdepth", "fs_smsimple_packdepth");
bgfx::ProgramHandle progDraw = loadProgram("vs_smsimple_draw", "fs_smsimple_draw");
// Vertex declarations.
bgfx::VertexDecl PosNormalDecl;
PosNormalDecl.begin();
PosNormalDecl.add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float);
PosNormalDecl.add(bgfx::Attrib::Normal, 4, bgfx::AttribType::Uint8, true, true);
PosNormalDecl.end();
// Meshes.
Mesh bunnyMesh;
Mesh cubeMesh;
Mesh hollowcubeMesh;
Mesh hplaneMesh;
bunnyMesh.load("meshes/bunny.bin");
cubeMesh.load("meshes/cube.bin");
hollowcubeMesh.load("meshes/hollowcube.bin");
hplaneMesh.load(s_hplaneVertices, s_numHPlaneVertices, PosNormalDecl, s_planeIndices, s_numPlaneIndices);
// Render targets.
uint16_t shadowMapSize = 512;
s_rtShadowMap = bgfx::createRenderTarget(shadowMapSize, shadowMapSize, BGFX_RENDER_TARGET_COLOR_RGBA8 | BGFX_RENDER_TARGET_DEPTH_D16);
// Set view and projection matrices.
float view[16];
float proj[16];
const float eye[3] = { 0.0f, 30.0f, -60.0f };
const float at[3] = { 0.0f, 5.0f, 0.0f };
mtxLookAt(view, eye, at);
const float aspect = float(int32_t(width) ) / float(int32_t(height) );
mtxProj(proj, 60.0f, aspect, 0.1f, 1000.0f);
// Time acumulators.
float timeAccumulatorLight = 0.0f;
float timeAccumulatorScene = 0.0f;
entry::MouseState mouseState;
while (!entry::processEvents(width, height, debug, reset, &mouseState) )
{
// Time.
int64_t now = bx::getHPCounter();
static int64_t last = now;
const int64_t frameTime = now - last;
last = now;
const double freq = double(bx::getHPFrequency() );
const double toMs = 1000.0/freq;
const float deltaTime = float(frameTime/freq);
// Update time accumulators.
timeAccumulatorLight += deltaTime;
timeAccumulatorScene += deltaTime;
// Use debug font to print information about this example.
bgfx::dbgTextClear();
bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/15-shadowmaps-simple");
bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Shadow maps example.");
bgfx::dbgTextPrintf(0, 3, 0x0f, "Frame: % 7.3f[ms]", double(frameTime)*toMs);
// Setup lights.
float lightPos[4];
lightPos[0] = -cos(timeAccumulatorLight);
lightPos[1] = -1.0f;
lightPos[2] = -sin(timeAccumulatorLight);
lightPos[3] = 0.0f;
bgfx::setUniform(u_lightPos, lightPos);
// Setup instance matrices.
float mtxFloor[16];
mtxScaleRotateTranslate(mtxFloor
, 30.0f //scaleX
, 30.0f //scaleY
, 30.0f //scaleZ
, 0.0f //rotX
, 0.0f //rotY
, 0.0f //rotZ
, 0.0f //translateX
, 0.0f //translateY
, 0.0f //translateZ
);
float mtxBunny[16];
mtxScaleRotateTranslate(mtxBunny
, 5.0f
, 5.0f
, 5.0f
, 0.0f
, float(M_PI) - timeAccumulatorScene
, 0.0f
, 15.0f
, 5.0f
, 0.0f
);
float mtxHollowcube[16];
mtxScaleRotateTranslate(mtxHollowcube
, 2.5f
, 2.5f
, 2.5f
, 0.0f
, 1.56f - timeAccumulatorScene
, 0.0f
, 0.0f
, 10.0f
, 0.0f
);
float mtxCube[16];
mtxScaleRotateTranslate(mtxCube
, 2.5f
, 2.5f
, 2.5f
, 0.0f
, 1.56f - timeAccumulatorScene
, 0.0f
, -15.0f
, 5.0f
, 0.0f
);
// Define matrices.
float screenView[16];
float screenProj[16];
mtxIdentity(screenView);
mtxOrtho(screenProj, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 100.0f);
float lightView[16];
float lightProj[16];
const float eye[3] =
{
-lightPos[0],
-lightPos[1],
-lightPos[2],
};
const float at[3] = { 0.0f, 0.0f, 0.0f };
mtxLookAt(lightView, eye, at);
const float area = 30.0f;
mtxOrtho(lightProj, -area, area, -area, area, -100.0f, 100.0f);
/**
* RENDER_PASS_0 - Craft shadow map.
* RENDER_PASS_1 - Draw scene.
*/
bgfx::setViewRect(RENDER_PASS_0, 0, 0, shadowMapSize, shadowMapSize);
bgfx::setViewRect(RENDER_PASS_1, 0, 0, width, height);
bgfx::setViewTransform(RENDER_PASS_0, lightView, lightProj);
bgfx::setViewTransform(RENDER_PASS_1, view, proj);
bgfx::setViewRenderTarget(RENDER_PASS_0, s_rtShadowMap);
// Clear backbuffer and shadowmap rendertarget at beginning.
bgfx::setViewClearMask(0x3, BGFX_CLEAR_COLOR_BIT | BGFX_CLEAR_DEPTH_BIT, 0x303030ff, 1.0f, 0);
bgfx::submitMask(0x3);
// Render.
{ // Craft shadow map.
hplaneMesh.submit(RENDER_PASS_0, mtxFloor, progPackDepth);
bunnyMesh.submit(RENDER_PASS_0, mtxBunny, progPackDepth);
hollowcubeMesh.submit(RENDER_PASS_0, mtxHollowcube, progPackDepth);
cubeMesh.submit(RENDER_PASS_0, mtxCube, progPackDepth);
}
{ // Draw Scene.
float mtxShadow[16]; //lightviewProjCrop
float lightMtx[16]; //modelLightviewProjCrop
const float s = (s_flipV) ? 1.0f : -1.0f; //sign
const float mtxCrop[16] =
{
0.5f, 0.0f, 0.0f, 0.0f,
0.0f, s*0.5f, 0.0f, 0.0f,
0.0f, 0.0f, 0.5f, 0.0f,
0.5f, 0.5f, 0.5f, 1.0f,
};
float mtxTmp[16];
mtxMul(mtxTmp, lightProj, mtxCrop);
mtxMul(mtxShadow, lightView, mtxTmp);
// Floor.
mtxMul(lightMtx, mtxFloor, mtxShadow);
bgfx::setUniform(u_lightMtx, lightMtx);
hplaneMesh.submit(RENDER_PASS_1, mtxFloor, progDraw);
// Bunny.
mtxMul(lightMtx, mtxBunny, mtxShadow);
bgfx::setUniform(u_lightMtx, lightMtx);
bunnyMesh.submit(RENDER_PASS_1, mtxBunny, progDraw);
// Hollow cube.
mtxMul(lightMtx, mtxHollowcube, mtxShadow);
bgfx::setUniform(u_lightMtx, lightMtx);
hollowcubeMesh.submit(RENDER_PASS_1, mtxHollowcube, progDraw);
// Cube.
mtxMul(lightMtx, mtxCube, mtxShadow);
bgfx::setUniform(u_lightMtx, lightMtx);
cubeMesh.submit(RENDER_PASS_1, mtxCube, progDraw);
}
// Advance to next frame. Rendering thread will be kicked to
// process submitted rendering primitives.
bgfx::frame();
}
bunnyMesh.unload();
cubeMesh.unload();
hollowcubeMesh.unload();
hplaneMesh.unload();
bgfx::destroyProgram(progPackDepth);
bgfx::destroyProgram(progDraw);
bgfx::destroyRenderTarget(s_rtShadowMap);
bgfx::destroyUniform(u_shadowMap);
bgfx::destroyUniform(u_lightPos);
bgfx::destroyUniform(u_lightMtx);
// Shutdown bgfx.
bgfx::shutdown();
return 0;
}

View File

@ -0,0 +1,7 @@
vec3 v_view : TEXCOORD0 = vec3(0.0, 0.0, 0.0);
vec4 v_shadowcoord : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0);
vec4 v_position : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0);
vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0);
vec3 a_position : POSITION;
vec4 a_normal : NORMAL;

View File

@ -0,0 +1,24 @@
$input a_position, a_normal
$output v_view, v_normal, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform mat4 u_lightMtx;
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
const float shadowMapOffset = 0.001;
vec3 posOffset = a_position + normal.xyz * shadowMapOffset;
v_shadowcoord = mul(u_lightMtx, vec4(posOffset, 1.0) );
}

View File

@ -0,0 +1,15 @@
$input a_position
$output v_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_position = gl_Position;
}

View File

@ -0,0 +1,235 @@
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
float linstep(float _edge0, float _edge1, float _x)
{
return clamp((_x-_edge0)/(_edge1-_edge0), 0.0, 1.0);
}
float attenuation(float _dist, vec3 _attn)
{
return 1.0 / ( _attn.x //const
+ _attn.y * _dist //linear
+ _attn.z * _dist * _dist //quadrantic
);
}
float spot(float _ldotsd, float _inner, float _outer)
{
float inner = cos(radians(_inner));
float outer = cos(radians(min(_outer, _inner - 0.001)));
float spot = clamp((_ldotsd - inner) / (outer - inner), 0.0, 1.0);
return spot;
}
vec2 lit(vec3 _ld, vec3 _n, vec3 _vd, float _exp)
{
//diff
float ndotl = dot(_n, _ld);
//spec
vec3 r = 2.0*ndotl*_n - _ld; // reflect(_ld, _n);
float rdotv = dot(r, _vd);
float spec = step(0.0, ndotl) * pow(max(0.0, rdotv), _exp) * (2.0 + _exp)/8.0;
return max(vec2(ndotl, spec), 0.0);
}
struct Light
{
vec3 l;
vec3 ld;
float attn;
};
Light evalLight(vec3 _v, vec4 _l, vec3 _spotDirection, float _spotInner, float _spotOuter, vec3 _attnParams)
{
Light light;
//directional
light.l = _l.xyz;
light.ld = -normalize(light.l);
light.attn = 1.0;
if (0.0 != _l.w) //point or spot
{
light.l = _l.xyz - _v;
light.ld = normalize(light.l);
float ldotsd = max(0.0, dot(-light.ld, normalize(_spotDirection)));
float falloff = spot(ldotsd, _spotOuter, _spotInner);
light.attn = attenuation(length(light.l), _attnParams) * mix(falloff, 1.0, step(90, _spotOuter));
}
return light;
}
float texcoordInRange(vec2 _texcoord)
{
bool inRange = all(greaterThan(_texcoord, vec2_splat(0.0)))
&& all(lessThan (_texcoord, vec2_splat(1.0)))
;
return float(inRange);
}
float hardShadow(sampler2D _sampler, vec4 _shadowCoord, float _bias)
{
vec2 texCoord = _shadowCoord.xy/_shadowCoord.w;
bool outside = any(greaterThan(texCoord, vec2_splat(1.0)))
|| any(lessThan (texCoord, vec2_splat(0.0)))
;
if (outside)
{
return 1.0;
}
float receiver = (_shadowCoord.z-_bias)/_shadowCoord.w;
float occluder = unpackRgbaToFloat(texture2D(_sampler, texCoord) );
float visibility = step(receiver, occluder);
return visibility;
}
float PCF(sampler2D _sampler, vec4 _shadowCoord, float _bias, vec4 _pcfParams, vec2 _texelSize)
{
float result = 0.0;
vec2 offset = _pcfParams.zw * _texelSize * _shadowCoord.w;
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-1.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(-0.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(0.5, 1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -1.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, -0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 0.5) * offset, 0.0, 0.0), _bias);
result += hardShadow(_sampler, _shadowCoord + vec4(vec2(1.5, 1.5) * offset, 0.0, 0.0), _bias);
return result / 16.0;
}
float VSM(sampler2D _sampler, vec4 _shadowCoord, float _bias, float _depthMultiplier, float _minVariance)
{
vec2 texCoord = _shadowCoord.xy/_shadowCoord.w;
bool outside = any(greaterThan(texCoord, vec2_splat(1.0)))
|| any(lessThan (texCoord, vec2_splat(0.0)))
;
if (outside)
{
return 1.0;
}
float receiver = (_shadowCoord.z-_bias)/_shadowCoord.w * _depthMultiplier;
vec4 rgba = texture2D(_sampler, texCoord);
vec2 occluder = vec2(unpackHalfFloat(rgba.rg), unpackHalfFloat(rgba.ba)) * _depthMultiplier;
if (receiver < occluder.x)
{
return 1.0;
}
float variance = max(occluder.y - (occluder.x*occluder.x), _minVariance);
float d = receiver - occluder.x;
float visibility = variance / (variance + d*d);
return visibility;
}
float ESM(sampler2D _sampler, vec4 _shadowCoord, float _bias, float _depthMultiplier)
{
vec2 texCoord = _shadowCoord.xy/_shadowCoord.w;
bool outside = any(greaterThan(texCoord, vec2_splat(1.0)))
|| any(lessThan (texCoord, vec2_splat(0.0)))
;
if (outside)
{
return 1.0;
}
float receiver = (_shadowCoord.z-_bias)/_shadowCoord.w;
float occluder = unpackRgbaToFloat(texture2D(_sampler, texCoord) );
float visibility = clamp(exp(_depthMultiplier * (occluder-receiver) ), 0.0, 1.0);
return visibility;
}
vec4 blur9(sampler2D _sampler, vec2 _uv0, vec4 _uv1, vec4 _uv2, vec4 _uv3, vec4 _uv4)
{
#define _BLUR9_WEIGHT_0 1.0
#define _BLUR9_WEIGHT_1 0.9
#define _BLUR9_WEIGHT_2 0.55
#define _BLUR9_WEIGHT_3 0.18
#define _BLUR9_WEIGHT_4 0.1
#define _BLUR9_NORMALIZE (_BLUR9_WEIGHT_0+2.0*(_BLUR9_WEIGHT_1+_BLUR9_WEIGHT_2+_BLUR9_WEIGHT_3+_BLUR9_WEIGHT_4) )
#define BLUR9_WEIGHT(_x) (_BLUR9_WEIGHT_##_x/_BLUR9_NORMALIZE)
float blur;
blur = unpackRgbaToFloat(texture2D(_sampler, _uv0) * BLUR9_WEIGHT(0));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv1.xy) * BLUR9_WEIGHT(1));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv1.zw) * BLUR9_WEIGHT(1));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv2.xy) * BLUR9_WEIGHT(2));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv2.zw) * BLUR9_WEIGHT(2));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv3.xy) * BLUR9_WEIGHT(3));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv3.zw) * BLUR9_WEIGHT(3));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv4.xy) * BLUR9_WEIGHT(4));
blur += unpackRgbaToFloat(texture2D(_sampler, _uv4.zw) * BLUR9_WEIGHT(4));
return packFloatToRgba(blur);
}
vec4 blur9VSM(sampler2D _sampler, vec2 _uv0, vec4 _uv1, vec4 _uv2, vec4 _uv3, vec4 _uv4)
{
#define _BLUR9_WEIGHT_0 1.0
#define _BLUR9_WEIGHT_1 0.9
#define _BLUR9_WEIGHT_2 0.55
#define _BLUR9_WEIGHT_3 0.18
#define _BLUR9_WEIGHT_4 0.1
#define _BLUR9_NORMALIZE (_BLUR9_WEIGHT_0+2.0*(_BLUR9_WEIGHT_1+_BLUR9_WEIGHT_2+_BLUR9_WEIGHT_3+_BLUR9_WEIGHT_4) )
#define BLUR9_WEIGHT(_x) (_BLUR9_WEIGHT_##_x/_BLUR9_NORMALIZE)
vec2 blur;
vec4 val;
val = texture2D(_sampler, _uv0) * BLUR9_WEIGHT(0);
blur = vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv1.xy) * BLUR9_WEIGHT(1);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv1.zw) * BLUR9_WEIGHT(1);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv2.xy) * BLUR9_WEIGHT(2);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv2.zw) * BLUR9_WEIGHT(2);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv3.xy) * BLUR9_WEIGHT(3);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv3.zw) * BLUR9_WEIGHT(3);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv4.xy) * BLUR9_WEIGHT(4);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
val = texture2D(_sampler, _uv4.zw) * BLUR9_WEIGHT(4);
blur += vec2(unpackHalfFloat(val.rg), unpackHalfFloat(val.ba));
return vec4(packHalfFloat(blur.x), packHalfFloat(blur.y));
}

View File

@ -0,0 +1,11 @@
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
}

View File

@ -0,0 +1,84 @@
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "common.sh"
uniform vec4 u_params0;
uniform vec4 u_params1;
uniform vec4 u_params2;
uniform vec4 u_color;
uniform vec3 u_materialKa;
uniform vec3 u_materialKd;
uniform vec4 u_materialKs;
uniform vec4 u_lightPosition;
uniform vec4 u_lightAmbientPower;
uniform vec4 u_lightDiffusePower;
uniform vec4 u_lightSpecularPower;
uniform vec4 u_lightSpotDirectionInner;
uniform vec4 u_lightAttenuationSpotOuter;
uniform vec4 u_smSamplingParams;
uniform vec4 u_csmFarDistances;
#if SM_OMNI
uniform vec3 u_tetraNormalGreen;
uniform vec3 u_tetraNormalYellow;
uniform vec3 u_tetraNormalBlue;
uniform vec3 u_tetraNormalRed;
#endif
SAMPLER2D(u_shadowMap0, 4);
SAMPLER2D(u_shadowMap1, 5);
SAMPLER2D(u_shadowMap2, 6);
SAMPLER2D(u_shadowMap3, 7);
struct Shader
{
vec3 ambi;
vec3 diff;
vec3 spec;
};
Shader evalShader(float _diff, float _spec)
{
Shader shader;
shader.ambi = u_lightAmbientPower.xyz * u_lightAmbientPower.w * u_materialKa;
shader.diff = u_lightDiffusePower.xyz * u_lightDiffusePower.w * u_materialKd * _diff;
shader.spec = u_lightSpecularPower.xyz * u_lightSpecularPower.w * u_materialKs.xyz * _spec;
return shader;
}
float computeVisibility(sampler2D _sampler
, vec4 _shadowCoord
, float _bias
, vec4 _samplingParams
, vec2 _texelSize
, float _depthMultiplier
, float _minVariance
, float _hardness
)
{
float visibility;
#if SM_LINEAR
vec4 shadowcoord = vec4(_shadowCoord.xy / _shadowCoord.w, _shadowCoord.z, 1.0);
#else
vec4 shadowcoord = _shadowCoord;
#endif
#if SM_HARD
visibility = hardShadow(_sampler, shadowcoord, _bias);
#elif SM_PCF
visibility = PCF(_sampler, shadowcoord, _bias, _samplingParams, _texelSize);
#elif SM_VSM
visibility = VSM(_sampler, shadowcoord, _bias, _depthMultiplier, _minVariance);
#elif SM_ESM
visibility = ESM(_sampler, shadowcoord, _bias, _depthMultiplier * _hardness);
#endif
return visibility;
}

View File

@ -0,0 +1,15 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#define SM_LINEAR 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,18 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#define SM_LINEAR 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#define SM_LINEAR 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_ESM 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,15 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,15 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#define SM_LINEAR 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#define SM_LINEAR 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#define SM_LINEAR 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_HARD 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,151 @@
#define u_ambientPass u_params0.x
#define u_lightningPass u_params0.y
#define u_shadowMapBias u_params1.x
#define u_shadowMapParam0 u_params1.z
#define u_shadowMapParam1 u_params1.w
#define u_shadowMapShowCoverage u_params2.y
#define u_shadowMapTexelSize u_params2.z
#define u_spotDirection u_lightSpotDirectionInner.xyz
#define u_spotInner u_lightSpotDirectionInner.w
#define u_lightAttnParams u_lightAttenuationSpotOuter.xyz
#define u_spotOuter u_lightAttenuationSpotOuter.w
// Pcf
#define u_shadowMapPcfMode u_shadowMapParam0
#define u_shadowMapNoiseAmount u_shadowMapParam1
// Vsm
#define u_shadowMapMinVariance u_shadowMapParam0
#define u_shadowMapDepthMultiplier u_shadowMapParam1
// Esm
#define u_shadowMapHardness u_shadowMapParam0
#define u_shadowMapDepthMultiplier u_shadowMapParam1
{
vec3 colorCoverage;
float visibility;
#if SM_CSM
vec2 texelSize = vec2_splat(u_shadowMapTexelSize);
vec2 texcoord1 = v_texcoord1.xy/v_texcoord1.w;
vec2 texcoord2 = v_texcoord2.xy/v_texcoord2.w;
vec2 texcoord3 = v_texcoord3.xy/v_texcoord3.w;
vec2 texcoord4 = v_texcoord4.xy/v_texcoord4.w;
bool selection0 = all(lessThan(texcoord1, vec2_splat(0.99))) && all(greaterThan(texcoord1, vec2_splat(0.01)));
bool selection1 = all(lessThan(texcoord2, vec2_splat(0.99))) && all(greaterThan(texcoord2, vec2_splat(0.01)));
bool selection2 = all(lessThan(texcoord3, vec2_splat(0.99))) && all(greaterThan(texcoord3, vec2_splat(0.01)));
bool selection3 = all(lessThan(texcoord4, vec2_splat(0.99))) && all(greaterThan(texcoord4, vec2_splat(0.01)));
if (selection0)
{
vec4 shadowcoord = v_texcoord1;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
colorCoverage = vec3(-coverage, coverage, -coverage);
visibility = computeVisibility(u_shadowMap0, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
}
else if (selection1)
{
vec4 shadowcoord = v_texcoord2;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
colorCoverage = vec3(coverage, coverage, -coverage);
visibility = computeVisibility(u_shadowMap1, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/2.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
}
else if (selection2)
{
vec4 shadowcoord = v_texcoord3;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
colorCoverage = vec3(-coverage, -coverage, coverage);
visibility = computeVisibility(u_shadowMap2, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/3.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
}
else //selection3
{
vec4 shadowcoord = v_texcoord4;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
colorCoverage = vec3(coverage, -coverage, -coverage);
visibility = computeVisibility(u_shadowMap3, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/4.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
}
#elif SM_OMNI
vec2 texelSize = vec2_splat(u_shadowMapTexelSize/4.0);
vec4 faceSelection;
vec3 pos = v_position.xyz;
faceSelection.x = dot(u_tetraNormalGreen, pos);
faceSelection.y = dot(u_tetraNormalYellow, pos);
faceSelection.z = dot(u_tetraNormalBlue, pos);
faceSelection.w = dot(u_tetraNormalRed, pos);
vec4 shadowcoord;
float faceMax = max(max(faceSelection.x, faceSelection.y), max(faceSelection.z, faceSelection.w));
if (faceSelection.x == faceMax)
{
shadowcoord = v_texcoord1;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
colorCoverage = vec3(-coverage, coverage, -coverage);
}
else if (faceSelection.y == faceMax)
{
shadowcoord = v_texcoord2;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
colorCoverage = vec3(coverage, coverage, -coverage);
}
else if (faceSelection.z == faceMax)
{
shadowcoord = v_texcoord3;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
colorCoverage = vec3(-coverage, -coverage, coverage);
}
else // (faceSelection.w == faceMax)
{
shadowcoord = v_texcoord4;
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
colorCoverage = vec3(coverage, -coverage, -coverage);
}
visibility = computeVisibility(u_shadowMap0, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
#else
vec2 texelSize = vec2_splat(u_shadowMapTexelSize);
float coverage = texcoordInRange(v_shadowcoord.xy/v_shadowcoord.w) * 0.3;
colorCoverage = vec3(coverage, -coverage, -coverage);
visibility = computeVisibility(u_shadowMap0, v_shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
#endif
vec3 v = v_view;
vec3 vd = -normalize(v_view);
vec3 n = v_normal;
Light light = evalLight(v, u_lightPosition, u_spotDirection, u_spotInner, u_spotOuter, u_lightAttnParams);
vec2 lc = lit(light.ld, n, vd, u_materialKs.w) * light.attn;
Shader shader = evalShader(lc.x, lc.y);
//Fog.
const vec3 fogColor = vec3_splat(0.0);
const float fogDensity = 0.0035;
const float LOG2 = 1.442695;
float z = length(v);
float fogFactor = clamp(1.0/exp2(fogDensity*fogDensity*z*z*LOG2), 0.0, 1.0);
vec3 color = u_color.xyz;
vec3 ambient = shader.ambi * color;
vec3 brdf = (shader.diff + shader.spec) * color * visibility;
vec3 final = toGamma(abs(ambient + brdf)) + (colorCoverage * u_shadowMapShowCoverage);
gl_FragColor.xyz = mix(fogColor, final, fogFactor);
gl_FragColor.w = 1.0;
}

View File

@ -0,0 +1,15 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#define SM_LINEAR 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#define SM_LINEAR 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#define SM_LINEAR 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_PCF 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,15 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#define SM_LINEAR 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#define SM_LINEAR 1
#define SM_CSM 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,17 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#define SM_LINEAR 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,16 @@
$input v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#define SM_VSM 1
#define SM_OMNI 1
#include "fs_shadowmaps_color_lightning.sh"
void main()
{
#include "fs_shadowmaps_color_lightning_main.sh"
}

View File

@ -0,0 +1,22 @@
$input v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_color;
SAMPLER2D(u_texColor, 0);
void main()
{
vec4 tcolor = toLinear(texture2D(u_texColor, v_texcoord0));
if (tcolor.x < 0.1) //OK for now.
{
discard;
}
gl_FragColor = toGamma(tcolor + u_color);
}

View File

@ -0,0 +1,14 @@
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "common.sh"
SAMPLER2D(u_shadowMap0, 4);
void main()
{
gl_FragColor = blur9(u_shadowMap0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4);
}

View File

@ -0,0 +1,15 @@
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "common.sh"
SAMPLER2D(u_shadowMap0, 4);
void main()
{
gl_FragColor = blur9VSM(u_shadowMap0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4);
}

View File

@ -0,0 +1,14 @@
$input v_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
float depth = v_position.z/v_position.w * 0.5 + 0.5;
gl_FragColor = packFloatToRgba(depth);
}

View File

@ -0,0 +1,13 @@
$input v_depth
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_FragColor = packFloatToRgba(v_depth);
}

View File

@ -0,0 +1,20 @@
$input v_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
float depth = v_position.z/v_position.w * 0.5 + 0.5;
float depthSq = depth*depth;
//TODO: try this.
//vec2 dxy = vec2(dFdx(depth), dFdy(depth));
//depthSq += 0.25*dot(dxy, dxy);
gl_FragColor = vec4(packHalfFloat(depth), packHalfFloat(depthSq));
}

View File

@ -0,0 +1,20 @@
$input v_depth
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
float depth = v_depth;
float depthSq = depth*depth;
//TODO: try this.
//vec2 dxy = vec2(dFdx(depth), dFdy(depth));
//depthSq += 0.25*dot(dxy, dxy);
gl_FragColor = vec4(packHalfFloat(depth), packHalfFloat(depthSq));
}

View File

@ -0,0 +1,14 @@
$input v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
SAMPLER2D(u_texColor, 0);
void main()
{
gl_FragColor = texture2D(u_texColor, v_texcoord0);
}

View File

@ -0,0 +1,19 @@
$input v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
SAMPLER2D(u_shadowMap0, 4);
uniform vec4 u_params2;
#define u_depthValuePow u_params2.x
void main()
{
float depth = unpackRgbaToFloat(texture2D(u_shadowMap0, v_texcoord0) );
vec3 rgba = pow(vec3_splat(depth), vec3_splat(u_depthValuePow) );
gl_FragColor = vec4(rgba, 1.0);
}

View File

@ -0,0 +1,20 @@
$input v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
SAMPLER2D(u_shadowMap0, 4);
uniform vec4 u_params2;
#define u_depthValuePow u_params2.x
void main()
{
vec4 val = texture2D(u_shadowMap0, v_texcoord0);
float depth = unpackHalfFloat(val.rg);
vec3 rgba = pow(vec3_splat(depth), vec3_splat(u_depthValuePow) );
gl_FragColor = vec4(rgba, 1.0);
}

View File

@ -0,0 +1,14 @@
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "common.sh"
SAMPLER2D(u_shadowMap0, 4);
void main()
{
gl_FragColor = blur9(u_shadowMap0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4);
}

View File

@ -0,0 +1,15 @@
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "common.sh"
SAMPLER2D(u_shadowMap0, 4);
void main()
{
gl_FragColor = blur9VSM(u_shadowMap0, v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4);
}

View File

@ -0,0 +1,934 @@
# Blender v2.66 (sub 1) OBJ File: ''
# www.blender.org
g holeycube
v 1.500000 1.211657 0.000000
v 1.500000 1.211656 1.209338
v 1.236416 1.211656 1.209338
v 1.236416 1.211657 0.000000
v 1.500000 1.500000 0.000000
v 1.500000 1.500000 1.209338
v 1.236416 1.500000 1.209338
v 1.236416 1.500000 0.000000
v 1.500000 -0.000000 1.209337
v 1.500000 -1.211657 1.209337
v 1.236416 -1.211657 1.209337
v 1.236416 -0.000000 1.209337
v 1.236416 -0.000000 1.500000
v 1.236416 -1.211657 1.500000
v 1.500000 -1.211657 1.500000
v 1.500000 -0.000000 1.500000
v 1.500000 0.000000 -1.500000
v 1.500000 -1.211656 -1.500000
v 1.236416 -1.211656 -1.500000
v 1.236416 0.000000 -1.500000
v -1.236416 0.000000 -1.500000
v -1.236416 -1.211656 -1.500000
v -1.500000 -1.211656 -1.500000
v -1.500000 0.000000 -1.500000
v -1.500000 -0.000000 1.500000
v -1.500000 -1.211657 1.500000
v -1.236416 -1.211657 1.500000
v -1.236416 -0.000000 1.500000
v -1.236416 -0.000000 1.209337
v -1.236416 -1.211657 1.209337
v -1.500000 -1.211657 1.209337
v -1.500000 -0.000000 1.209337
v -1.500000 1.211656 1.500000
v -1.500000 1.211656 1.209338
v -1.236416 1.211656 1.209338
v -1.236416 1.211656 1.500000
v -1.500000 1.211657 -1.500000
v -1.236416 1.211657 -1.500000
v 1.236416 1.211657 -1.500000
v 1.500000 1.211657 -1.500000
v 1.500000 1.211656 1.500000
v 1.236416 1.211656 1.500000
v 0.000000 -1.500000 1.209337
v -1.236416 -1.500000 1.209337
v 0.000000 -1.211657 1.209337
v 0.000000 1.211656 1.209338
v -1.236416 1.500000 1.209338
v 0.000000 1.500000 1.209338
v -1.236416 1.500000 1.500000
v 0.000000 1.500000 1.500000
v 0.000000 1.211656 1.500000
v 1.236416 1.500000 1.500000
v -1.500000 1.500000 1.500000
v 1.500000 1.500000 1.500000
v 0.000000 -1.500000 -1.500000
v -1.236416 -1.500000 -1.500000
v 0.000000 -1.211656 -1.500000
v 0.000000 -1.500000 -1.209338
v -1.236416 -1.500000 -1.209338
v 1.236416 -1.211657 -0.000000
v 1.236416 -1.211656 -1.209338
v 1.236416 -1.500000 -1.209338
v 1.236416 -1.500000 -0.000000
v 1.500000 -1.500000 -0.000000
v 1.500000 -1.500000 -1.209338
v 1.500000 -1.211656 -1.209338
v 1.500000 -1.211657 -0.000000
v 1.500000 -1.500000 1.209337
v 1.236416 -1.500000 1.209337
v -1.236416 -1.500000 -0.000000
v -1.500000 -1.500000 1.209337
v -1.500000 -1.500000 -0.000000
v -1.500000 -1.500000 -1.209338
v -1.236416 -1.211657 -0.000000
v -1.236416 -1.211656 -1.209338
v -1.500000 -1.211656 -1.209338
v -1.500000 -1.211657 -0.000000
v -1.500000 1.211657 0.000000
v -1.500000 1.211657 -1.209337
v -1.236416 1.211657 -1.209337
v -1.236416 1.211657 0.000000
v -1.236416 1.500000 0.000000
v -1.236416 1.500000 -1.209337
v -1.500000 1.500000 -1.209337
v -1.500000 1.500000 0.000000
v -1.500000 1.500000 1.209338
v 1.500000 1.500000 -1.209337
v 1.236416 1.500000 -1.209337
v 1.236416 1.211657 -1.209337
v 1.500000 1.211657 -1.209337
v 1.236416 0.000000 -1.209337
v 1.500000 0.000000 -1.209337
v -1.500000 0.000000 -1.209337
v -1.236416 0.000000 -1.209337
v 0.000000 -1.211656 -1.209338
v 0.000000 1.211657 -1.209337
v 0.000000 1.211657 -1.500000
v 0.000000 1.500000 -1.209337
v 0.000000 1.500000 -1.500000
v -1.236416 1.500000 -1.500000
v 1.236416 1.500000 -1.500000
v -1.500000 1.500000 -1.500000
v 1.500000 1.500000 -1.500000
v -1.500000 -1.500000 1.500000
v -1.236416 -1.500000 1.500000
v 0.000000 -1.211657 1.500000
v -1.500000 -1.500000 -1.500000
v 0.000000 -1.500000 1.500000
v 1.236416 -1.500000 1.500000
v 1.500000 -1.500000 1.500000
v 1.236416 -1.500000 -1.500000
v 1.500000 -1.500000 -1.500000
v 1.500000 1.500000 0.000000
v 1.500000 1.500000 1.209338
v 1.236416 1.500000 1.209338
v 1.236416 1.500000 0.000000
v -1.236416 1.500000 1.209338
v 0.000000 1.500000 1.209338
v -1.236416 1.500000 1.500000
v 0.000000 1.500000 1.500000
v 1.236416 1.500000 1.500000
v -1.500000 1.500000 1.500000
v 1.500000 1.500000 1.500000
v -1.236416 1.500000 0.000000
v -1.236416 1.500000 -1.209337
v -1.500000 1.500000 -1.209337
v -1.500000 1.500000 0.000000
v -1.500000 1.500000 1.209338
v 1.500000 1.500000 -1.209337
v 1.236416 1.500000 -1.209337
v 0.000000 1.500000 -1.209337
v 0.000000 1.500000 -1.500000
v -1.236416 1.500000 -1.500000
v 1.236416 1.500000 -1.500000
v -1.500000 1.500000 -1.500000
v 1.500000 1.500000 -1.500000
v 0.000000 -1.500000 1.209337
v 0.000000 -1.211657 1.209337
v 0.000000 -1.211657 1.500000
v 0.000000 -1.500000 1.500000
v 1.236416 -1.211657 1.209337
v -1.236416 -1.211657 1.209337
v 0.000000 -1.211657 1.209337
vn 0.000000 -1.000000 -0.000001
vn 1.000000 0.000000 0.000000
vn -1.000000 -0.000000 0.000000
vn 0.000000 0.000000 -1.000000
vn 0.000000 -0.000000 1.000000
vn 0.000000 0.000001 -1.000000
vn 0.000000 0.000000 0.000000
vn 0.000000 -1.000000 -0.000000
vn 0.000000 1.000000 0.000001
vn 0.000000 -0.000001 1.000000
vn 0.000000 1.000000 0.000000
s off
f 1//1 2//1 3//1 4//1
f 2//2 1//2 5//2 6//2
f 4//3 3//3 7//3 8//3
f 9//4 10//4 11//4 12//4
f 13//5 14//5 15//5 16//5
f 17//4 18//4 19//4 20//4
f 21//4 22//4 23//4 24//4
f 25//5 26//5 27//5 28//5
f 29//4 30//4 31//4 32//4
f 32//3 31//3 26//3 25//3
f 25//3 33//3 34//3 32//3
f 32//6 34//6 35//6 29//6
f 28//5 36//5 33//5 25//5
f 24//4 37//4 38//4 21//4
f 20//4 39//4 40//4 17//4
f 16//5 41//5 42//5 13//5
f 12//6 3//6 2//6 9//6
f 9//2 2//2 41//2 16//2
f 13//3 42//3 3//3 12//3
f 43//4 44//4 30//4 45//4
f 46//4 35//4 47//4 48//4
f 99//7 100//7 133//7 132//7
f 50//5 49//5 36//5 51//5
f 51//5 42//5 52//5 50//5
f 100//7 102//7 135//7 133//7
f 48//4 7//4 3//4 46//4
f 46//8 3//8 42//8 51//8
f 49//5 53//5 33//5 36//5
f 42//5 41//5 54//5 52//5
f 86//7 53//7 122//7 128//7
f 41//2 2//2 6//2 54//2
f 55//4 56//4 22//4 57//4
f 58//8 59//8 56//8 55//8
f 60//3 61//3 62//3 63//3
f 64//2 65//2 66//2 67//2
f 67//9 66//9 61//9 60//9
f 63//8 62//8 65//8 64//8
f 64//8 68//8 69//8 63//8
f 70//8 44//8 71//8 72//8
f 72//8 73//8 59//8 70//8
f 74//9 75//9 76//9 77//9
f 78//8 79//8 80//8 81//8
f 5//7 87//7 129//7 113//7
f 54//7 6//7 114//7 123//7
f 48//7 47//7 117//7 118//7
f 87//7 103//7 136//7 129//7
f 90//8 1//8 4//8 89//8
f 1//2 90//2 87//2 5//2
f 8//3 88//3 89//3 4//3
f 20//3 19//3 61//3 91//3
f 92//2 66//2 18//2 17//2
f 91//10 61//10 66//10 92//10
f 93//10 76//10 75//10 94//10
f 24//3 23//3 76//3 93//3
f 94//2 75//2 22//2 21//2
f 21//2 38//2 80//2 94//2
f 57//11 22//11 75//11 95//11
f 96//8 80//8 38//8 97//8
f 93//3 79//3 37//3 24//3
f 94//5 80//5 79//5 93//5
f 92//5 90//5 89//5 91//5
f 17//2 40//2 90//2 92//2
f 91//3 89//3 39//3 20//3
f 95//5 75//5 59//5 58//5
f 98//5 83//5 80//5 96//5
f 103//7 101//7 134//7 136//7
f 97//4 38//4 100//4 99//4
f 99//4 101//4 39//4 97//4
f 6//7 5//7 113//7 114//7
f 96//5 89//5 88//5 98//5
f 97//8 39//8 89//8 96//8
f 38//4 37//4 102//4 100//4
f 101//4 103//4 40//4 39//4
f 7//7 48//7 118//7 115//7
f 103//2 87//2 90//2 40//2
f 26//3 31//3 71//3 104//3
f 71//8 44//8 105//8 104//8
f 28//2 27//2 30//2 29//2
f 29//2 35//2 36//2 28//2
f 74//2 30//2 44//2 70//2
f 72//3 71//3 31//3 77//3
f 77//11 31//11 30//11 74//11
f 81//1 35//1 34//1 78//1
f 78//3 34//3 86//3 85//3
f 82//2 47//2 35//2 81//2
f 45//11 30//11 27//11 106//11
f 51//8 36//8 35//8 46//8
f 102//7 84//7 126//7 135//7
f 53//3 86//3 34//3 33//3
f 107//3 73//3 76//3 23//3
f 107//8 56//8 59//8 73//8
f 70//2 59//2 75//2 74//2
f 77//3 76//3 73//3 72//3
f 85//3 84//3 79//3 78//3
f 81//2 80//2 83//2 82//2
f 88//7 8//7 116//7 130//7
f 37//3 79//3 84//3 102//3
f 60//11 11//11 10//11 67//11
f 67//2 10//2 68//2 64//2
f 63//3 69//3 11//3 60//3
f 16//2 15//2 10//2 9//2
f 12//3 11//3 14//3 13//3
f 108//8 105//8 44//8 43//8
f 106//5 27//5 105//5 108//5
f 108//5 109//5 14//5 106//5
f 43//8 69//8 109//8 108//8
f 45//4 11//4 69//4 43//4
f 106//11 14//11 11//11 45//11
f 27//5 26//5 104//5 105//5
f 109//5 110//5 15//5 14//5
f 110//8 109//8 69//8 68//8
f 110//2 68//2 10//2 15//2
f 57//4 19//4 111//4 55//4
f 55//8 111//8 62//8 58//8
f 58//5 62//5 61//5 95//5
f 95//11 61//11 19//11 57//11
f 56//4 107//4 23//4 22//4
f 19//4 18//4 112//4 111//4
f 65//8 62//8 111//8 112//8
f 18//2 66//2 65//2 112//2
f 118//11 117//11 119//11 120//11
f 120//11 121//11 115//11 118//11
f 114//11 115//11 121//11 123//11
f 124//11 125//11 126//11 127//11
f 127//11 128//11 117//11 124//11
f 116//11 115//11 114//11 113//11
f 113//11 129//11 130//11 116//11
f 132//11 133//11 125//11 131//11
f 131//11 130//11 134//11 132//11
f 136//11 134//11 130//11 129//11
f 122//11 119//11 117//11 128//11
f 126//11 125//11 133//11 135//11
f 82//7 83//7 125//7 124//7
f 49//7 50//7 120//7 119//7
f 84//7 85//7 127//7 126//7
f 50//7 52//7 121//7 120//7
f 52//7 54//7 123//7 121//7
f 53//7 49//7 119//7 122//7
f 8//7 7//7 115//7 116//7
f 85//7 86//7 128//7 127//7
f 83//7 98//7 131//7 125//7
f 47//7 82//7 124//7 117//7
f 101//7 99//7 132//7 134//7
f 98//7 88//7 130//7 131//7
f 108//7 106//7 139//7 140//7
f 45//7 43//7 137//7 138//7
f 106//7 45//7 138//7 139//7
f 43//7 108//7 140//7 137//7
f 30//7 45//7 143//7 142//7
f 45//7 11//7 141//7 143//7
g holeycube.001
v 0.037848 0.053616 0.680965
v 0.414385 -0.152030 0.676229
v 0.382376 -0.209100 0.609416
v 0.005839 -0.003453 0.614153
v 0.003506 -0.010911 0.752536
v 0.380043 -0.216558 0.747800
v 0.348034 -0.273628 0.680987
v -0.028503 -0.067981 0.685724
v 0.558694 0.119124 0.375479
v 0.703003 0.390278 0.074730
v 0.670994 0.333208 0.007917
v 0.526685 0.062054 0.308667
v 0.617185 0.012627 0.307529
v 0.761494 0.283781 0.006779
v 0.793503 0.340851 0.073591
v 0.649194 0.069697 0.374341
v -0.284880 0.579845 0.386090
v -0.140571 0.850998 0.085340
v -0.172580 0.793929 0.018528
v -0.316889 0.522775 0.319277
v -0.617185 -0.012627 -0.307529
v -0.472876 0.258527 -0.608278
v -0.504885 0.201457 -0.675091
v -0.649194 -0.069697 -0.374341
v 0.284880 -0.579845 -0.386090
v 0.429189 -0.308690 -0.686840
v 0.461198 -0.251621 -0.620027
v 0.316889 -0.522775 -0.319277
v 0.226389 -0.473348 -0.318139
v 0.370698 -0.202194 -0.618889
v 0.338689 -0.259263 -0.685701
v 0.194380 -0.530418 -0.384952
v 0.140571 -0.850998 -0.085340
v 0.050071 -0.801571 -0.084202
v 0.082080 -0.744502 -0.017389
v 0.172580 -0.793929 -0.018528
v -0.793503 -0.340851 -0.073591
v -0.761494 -0.283781 -0.006779
v -0.461198 0.251621 0.620027
v -0.429189 0.308690 0.686840
v 0.504885 -0.201457 0.675091
v 0.472876 -0.258527 0.608278
v 0.555187 0.130035 -0.377057
v 0.405040 -0.137666 -0.690460
v 0.520846 0.065507 -0.305486
v 0.232228 -0.476801 0.296014
v 0.047738 -0.809030 0.054181
v 0.197886 -0.541329 0.367584
v 0.138238 -0.858457 0.053043
v 0.288386 -0.590756 0.366446
v 0.322728 -0.526228 0.294875
v 0.438534 -0.323055 0.679849
v 0.106229 -0.915526 -0.013769
v 0.470543 -0.265985 0.746662
v -0.288386 0.590756 -0.366446
v -0.438534 0.323055 -0.679849
v -0.322728 0.526228 -0.294875
v -0.197886 0.541329 -0.367584
v -0.348034 0.273628 -0.680987
v 0.294457 0.538855 0.012653
v -0.082080 0.744502 0.017389
v -0.047738 0.809030 -0.054181
v 0.328799 0.603383 -0.058918
v 0.360808 0.660452 0.007895
v -0.015729 0.866099 0.012631
v -0.050071 0.801571 0.084202
v 0.326466 0.595925 0.079466
v 0.737345 0.454805 0.003159
v 0.705335 0.397736 -0.063654
v 0.028503 0.067981 -0.685724
v 0.373030 -0.194736 -0.757272
v -0.003506 0.010911 -0.752536
v -0.380043 0.216558 -0.747800
v -0.005839 0.003453 -0.614153
v -0.382376 0.209100 -0.609416
v -0.414385 0.152030 -0.676229
v -0.037848 -0.053616 -0.680965
v -0.326466 -0.595925 -0.079466
v -0.703003 -0.390278 -0.074730
v -0.670994 -0.333208 -0.007917
v -0.294457 -0.538855 -0.012653
v -0.328799 -0.603383 0.058918
v -0.705335 -0.397736 0.063654
v -0.737345 -0.454805 -0.003159
v -0.360808 -0.660452 -0.007895
v 0.015729 -0.866099 -0.012631
v -0.373030 0.194736 0.757272
v -0.405040 0.137666 0.690460
v -0.370698 0.202194 0.618889
v -0.338689 0.259263 0.685701
v -0.226389 0.473348 0.318139
v -0.194380 0.530418 0.384952
v -0.558694 -0.119124 -0.375479
v -0.526685 -0.062054 -0.308667
v -0.232228 0.476801 -0.296014
v -0.520846 -0.065507 0.305486
v -0.611346 -0.016080 0.306624
v -0.555187 -0.130035 0.377057
v -0.645688 -0.080608 0.378195
v -0.795836 -0.348309 0.064792
v -0.495540 0.187093 0.691598
v -0.827845 -0.405378 -0.002021
v -0.463531 0.244163 0.758410
v 0.463531 -0.244163 -0.758410
v 0.495540 -0.187093 -0.691598
v 0.611346 0.016080 -0.306624
v -0.470543 0.265985 -0.746662
v 0.645688 0.080608 -0.378195
v 0.795836 0.348309 -0.064792
v 0.827845 0.405378 0.002021
v -0.138238 0.858457 -0.053043
v -0.106229 0.915526 0.013769
v 0.003506 -0.010911 0.752536
v 0.380043 -0.216558 0.747800
v 0.348034 -0.273628 0.680987
v -0.028503 -0.067981 0.685724
v 0.047738 -0.809030 0.054181
v 0.197886 -0.541329 0.367584
v 0.138238 -0.858457 0.053043
v 0.288386 -0.590756 0.366446
v 0.438534 -0.323055 0.679849
v 0.106229 -0.915526 -0.013769
v 0.470543 -0.265985 0.746662
v -0.328799 -0.603383 0.058918
v -0.705335 -0.397736 0.063654
v -0.737345 -0.454805 -0.003159
v -0.360808 -0.660452 -0.007895
v 0.015729 -0.866099 -0.012631
v -0.373030 0.194736 0.757272
v -0.405040 0.137666 0.690460
v -0.555187 -0.130035 0.377057
v -0.645688 -0.080608 0.378195
v -0.795836 -0.348309 0.064792
v -0.495540 0.187093 0.691598
v -0.827845 -0.405378 -0.002021
v -0.463531 0.244163 0.758410
v 0.555187 0.130035 -0.377057
v 0.520846 0.065507 -0.305486
v 0.611346 0.016080 -0.306624
v 0.645688 0.080608 -0.378195
v 0.670994 0.333208 0.007917
v 0.370698 -0.202194 -0.618889
v 0.520846 0.065507 -0.305486
vn 0.335692 0.630762 -0.699607
vn 0.342281 0.610259 0.714442
vn -0.342282 -0.610259 -0.714442
vn -0.877584 0.479296 0.011038
vn 0.877584 -0.479296 -0.011038
vn -0.877584 0.479295 0.011038
vn -0.342281 -0.610259 -0.714442
vn -0.877584 0.479295 0.011039
vn 0.877584 -0.479295 -0.011038
vn 0.335693 0.630761 -0.699607
vn -0.335692 -0.630762 0.699607
vn 0.342282 0.610259 0.714442
vn 0.877584 -0.479295 -0.011039
vn -0.335693 -0.630761 0.699607
vn -0.877584 0.479296 0.011039
vn 0.335693 0.630761 -0.699608
vn 0.877584 -0.479296 -0.011039
vn -0.335693 -0.630761 0.699608
s off
f 144//12 145//12 146//12 147//12
f 145//13 144//13 148//13 149//13
f 147//14 146//14 150//14 151//14
f 152//15 153//15 154//15 155//15
f 156//16 157//16 158//16 159//16
f 160//15 161//15 162//15 163//15
f 164//17 165//17 166//17 167//17
f 168//16 169//16 170//16 171//16
f 172//15 173//15 174//15 175//15
f 175//18 174//18 169//18 168//18
f 168//14 176//14 177//14 175//14
f 175//19 177//19 178//19 172//19
f 171//16 179//16 176//16 168//16
f 167//15 180//15 181//15 164//15
f 163//15 182//15 183//15 160//15
f 159//20 184//20 185//20 156//20
f 155//19 146//19 145//19 152//19
f 152//13 145//13 184//13 159//13
f 156//18 185//18 146//18 155//18
f 186//15 187//15 173//15 188//15
f 189//15 178//15 190//15 191//15
f 242//7 243//7 276//7 275//7
f 193//16 192//16 179//16 194//16
f 194//16 185//16 195//16 193//16
f 243//7 245//7 278//7 276//7
f 191//15 150//15 146//15 189//15
f 189//21 146//21 185//21 194//21
f 192//16 196//16 176//16 179//16
f 185//16 184//16 197//16 195//16
f 229//7 196//7 265//7 271//7
f 184//13 145//13 149//13 197//13
f 198//15 199//15 165//15 200//15
f 201//21 202//21 199//21 198//21
f 203//18 204//18 205//18 206//18
f 207//13 208//13 209//13 210//13
f 210//22 209//22 204//22 203//22
f 206//21 205//21 208//21 207//21
f 207//21 211//21 212//21 206//21
f 213//21 187//21 214//21 215//21
f 215//21 216//21 202//21 213//21
f 217//22 218//22 219//22 220//22
f 221//21 222//21 223//21 224//21
f 148//7 230//7 272//7 256//7
f 197//7 149//7 257//7 266//7
f 191//7 190//7 260//7 261//7
f 230//7 246//7 279//7 272//7
f 233//21 144//21 147//21 232//21
f 144//13 233//13 230//13 148//13
f 151//14 231//14 232//14 147//14
f 163//18 162//18 204//18 234//18
f 235//23 209//23 161//23 160//23
f 234//24 204//24 209//24 235//24
f 236//24 219//24 218//24 237//24
f 167//18 166//18 219//18 236//18
f 237//13 218//13 165//13 164//13
f 164//13 181//13 223//13 237//13
f 200//25 165//25 218//25 238//25
f 239//21 223//21 181//21 240//21
f 236//14 222//14 180//14 167//14
f 237//16 223//16 222//16 236//16
f 235//16 233//16 232//16 234//16
f 160//13 183//13 233//13 235//13
f 234//18 232//18 182//18 163//18
f 238//16 218//16 202//16 201//16
f 241//16 226//16 223//16 239//16
f 246//7 244//7 277//7 279//7
f 240//15 181//15 243//15 242//15
f 242//15 244//15 182//15 240//15
f 149//7 148//7 256//7 257//7
f 239//16 232//16 231//16 241//16
f 240//21 182//21 232//21 239//21
f 181//26 180//26 245//26 243//26
f 244//15 246//15 183//15 182//15
f 150//7 191//7 261//7 258//7
f 246//13 230//13 233//13 183//13
f 169//18 174//18 214//18 247//18
f 214//21 187//21 248//21 247//21
f 171//13 170//13 173//13 172//13
f 172//13 178//13 179//13 171//13
f 217//23 173//23 187//23 213//23
f 215//18 214//18 174//18 220//18
f 220//25 174//25 173//25 217//25
f 224//12 178//12 177//12 221//12
f 221//18 177//18 229//18 228//18
f 225//13 190//13 178//13 224//13
f 188//25 173//25 170//25 249//25
f 194//21 179//21 178//21 189//21
f 245//7 227//7 269//7 278//7
f 196//14 229//14 177//14 176//14
f 250//18 216//18 219//18 166//18
f 250//27 199//27 202//27 216//27
f 213//23 202//23 218//23 217//23
f 220//18 219//18 216//18 215//18
f 228//18 227//18 222//18 221//18
f 224//13 223//13 226//13 225//13
f 231//7 151//7 259//7 273//7
f 180//14 222//14 227//14 245//14
f 203//25 154//25 153//25 210//25
f 210//13 153//13 211//13 207//13
f 206//18 212//18 154//18 203//18
f 159//23 158//23 153//23 152//23
f 155//18 154//18 157//18 156//18
f 251//21 248//21 187//21 186//21
f 249//16 170//16 248//16 251//16
f 251//16 252//16 157//16 249//16
f 186//21 212//21 252//21 251//21
f 188//15 154//15 212//15 186//15
f 249//25 157//25 154//25 188//25
f 170//16 169//16 247//16 248//16
f 252//28 253//28 158//28 157//28
f 253//21 252//21 212//21 211//21
f 253//23 211//23 153//23 158//23
f 200//15 162//15 254//15 198//15
f 198//21 254//21 205//21 201//21
f 201//16 205//16 204//16 238//16
f 238//25 204//25 162//25 200//25
f 199//15 250//15 166//15 165//15
f 162//15 161//15 255//15 254//15
f 208//21 205//21 254//21 255//21
f 161//23 209//23 208//23 255//23
f 261//25 260//25 262//25 263//25
f 263//25 264//25 258//25 261//25
f 257//29 258//29 264//29 266//29
f 267//25 268//25 269//25 270//25
f 270//25 271//25 260//25 267//25
f 259//25 258//25 257//25 256//25
f 256//25 272//25 273//25 259//25
f 275//25 276//25 268//25 274//25
f 274//25 273//25 277//25 275//25
f 279//25 277//25 273//25 272//25
f 265//25 262//25 260//25 271//25
f 269//25 268//25 276//25 278//25
f 225//7 226//7 268//7 267//7
f 192//7 193//7 263//7 262//7
f 227//7 228//7 270//7 269//7
f 193//7 195//7 264//7 263//7
f 195//7 197//7 266//7 264//7
f 196//7 192//7 262//7 265//7
f 151//7 150//7 258//7 259//7
f 228//7 229//7 271//7 270//7
f 226//7 241//7 274//7 268//7
f 190//7 225//7 267//7 260//7
f 244//7 242//7 275//7 277//7
f 241//7 231//7 273//7 274//7
f 251//7 249//7 282//7 283//7
f 188//7 186//7 280//7 281//7
f 249//7 188//7 281//7 282//7
f 186//7 251//7 283//7 280//7
f 173//7 188//7 286//7 285//7
f 188//7 154//7 284//7 286//7
g holeycube.002
v 0.369385 2.003562 1.792544
v 0.963329 0.880686 2.925211
v 0.707927 0.635014 2.815589
v 0.113983 1.757890 1.682922
v 0.111409 2.147654 2.070667
v 0.705351 1.024778 3.203335
v 0.449950 0.779106 3.093713
v -0.143993 1.901982 1.961045
v 2.047380 0.275193 1.756502
v 3.131433 -0.330301 0.587792
v 2.876031 -0.575973 0.478171
v 1.791978 0.029521 1.646880
v 1.934732 -0.240361 1.919116
v 3.018785 -0.845855 0.750406
v 3.274187 -0.600183 0.860028
v 2.190134 0.005311 2.028738
v 0.716742 2.790825 -0.781068
v 1.800794 2.185331 -1.949777
v 1.545392 1.939659 -2.059399
v 0.461340 2.545153 -0.890690
v -1.934732 0.240361 -1.919116
v -0.850680 -0.365133 -3.087824
v -1.106082 -0.610805 -3.197446
v -2.190134 -0.005311 -2.028738
v -0.716742 -2.790825 0.781068
v 0.367311 -3.396319 -0.387641
v 0.622713 -3.150647 -0.278019
v -0.461340 -2.545153 0.890690
v -0.604093 -2.275271 0.618455
v 0.479959 -2.880765 -0.550255
v 0.224557 -3.126437 -0.659877
v -0.859495 -2.520943 0.508833
v -1.800794 -2.185331 1.949777
v -1.943547 -1.915450 1.677542
v -1.688145 -1.669778 1.787164
v -1.545392 -1.939659 2.059399
v -3.274187 0.600183 -0.860028
v -3.018785 0.845855 -0.750406
v -0.622713 3.150647 0.278019
v -0.367311 3.396319 0.387641
v 1.106082 0.610805 3.197446
v 0.850680 0.365133 3.087824
v 1.935972 -1.872461 -0.314165
v 0.737936 -3.024857 -0.828377
v 1.677995 -1.728369 -0.036042
v -0.490109 -0.517382 2.301377
v -1.946122 -1.525685 2.065288
v -0.748086 -0.373290 2.579500
v -1.803369 -1.795566 2.337522
v -0.605333 -0.643171 2.851735
v -0.347356 -0.787263 2.573611
v 0.592703 0.509225 3.365948
v -2.058771 -2.041239 2.227901
v 0.848105 0.754897 3.475569
v 0.605333 0.643171 -2.851735
v -0.592703 -0.509225 -3.365948
v 0.347356 0.787263 -2.573611
v 0.748086 0.373290 -2.579500
v -0.449950 -0.779106 -3.093713
v 2.282089 0.546902 -0.654497
v 1.688145 1.669778 -1.787164
v 1.946122 1.525685 -2.065288
v 2.540065 0.402810 -0.932619
v 2.795467 0.648482 -0.822998
v 2.201524 1.771358 -1.955666
v 1.943547 1.915450 -1.677542
v 2.537491 0.792574 -0.544875
v 3.389409 -0.474393 0.309670
v 3.134007 -0.720065 0.200048
v 0.143993 -1.901982 -1.961045
v 0.482534 -3.270529 -0.937999
v -0.111409 -2.147654 -2.070667
v -0.705351 -1.024778 -3.203335
v -0.113983 -1.757890 -1.682922
v -0.707927 -0.635014 -2.815589
v -0.963329 -0.880686 -2.925211
v -0.369385 -2.003562 -1.792544
v -2.537491 -0.792574 0.544875
v -3.131433 0.330301 -0.587792
v -2.876031 0.575973 -0.478171
v -2.282089 -0.546902 0.654497
v -2.540065 -0.402810 0.932619
v -3.134007 0.720065 -0.200048
v -3.389409 0.474393 -0.309670
v -2.795467 -0.648482 0.822998
v -2.201524 -1.771358 1.955666
v -0.482534 3.270529 0.937999
v -0.737936 3.024857 0.828377
v -0.479959 2.880765 0.550255
v -0.224557 3.126437 0.659877
v 0.604093 2.275271 -0.618455
v 0.859495 2.520943 -0.508833
v -2.047380 -0.275193 -1.756502
v -1.791978 -0.029521 -1.646880
v 0.490109 0.517382 -2.301377
v -1.677995 1.728369 0.036042
v -1.820749 1.998251 -0.236193
v -1.935972 1.872461 0.314165
v -2.078725 2.142343 0.041929
v -3.276761 0.989947 -0.472284
v -0.880689 3.294739 0.556142
v -3.532163 0.744275 -0.581905
v -0.625287 3.540411 0.665764
v 0.625287 -3.540411 -0.665764
v 0.880689 -3.294739 -0.556142
v 1.820749 -1.998251 0.236193
v -0.848105 -0.754897 -3.475569
v 2.078725 -2.142343 -0.041929
v 3.276761 -0.989947 0.472284
v 3.532163 -0.744275 0.581905
v 1.803369 1.795566 -2.337522
v 2.058771 2.041239 -2.227901
v 0.111409 2.147654 2.070667
v 0.705351 1.024778 3.203335
v 0.449950 0.779106 3.093713
v -0.143993 1.901982 1.961045
v -1.946122 -1.525685 2.065288
v -0.748086 -0.373290 2.579500
v -1.803369 -1.795566 2.337522
v -0.605333 -0.643171 2.851735
v 0.592703 0.509225 3.365948
v -2.058771 -2.041239 2.227901
v 0.848105 0.754897 3.475569
v -2.540065 -0.402810 0.932619
v -3.134007 0.720065 -0.200048
v -3.389409 0.474393 -0.309670
v -2.795467 -0.648482 0.822998
v -2.201524 -1.771358 1.955666
v -0.482534 3.270529 0.937999
v -0.737936 3.024857 0.828377
v -1.935972 1.872461 0.314165
v -2.078725 2.142343 0.041929
v -3.276761 0.989947 -0.472284
v -0.880689 3.294739 0.556142
v -3.532163 0.744275 -0.581905
v -0.625287 3.540411 0.665764
v 1.935972 -1.872461 -0.314165
v 1.677995 -1.728369 -0.036042
v 1.820749 -1.998251 0.236193
v 2.078725 -2.142343 -0.041929
v 2.876031 -0.575973 0.478171
v 0.479959 -2.880765 -0.550255
v 1.677995 -1.728369 -0.036042
vn 0.635737 -0.355088 -0.685384
vn 0.688513 0.662283 0.295519
vn -0.688513 -0.662283 -0.295518
vn -0.348983 0.659767 -0.665521
vn 0.348982 -0.659767 0.665521
vn -0.348982 0.659767 -0.665521
vn 0.348982 -0.659768 0.665521
vn -0.688513 -0.662283 -0.295519
vn 0.348983 -0.659767 0.665521
vn -0.348982 0.659768 -0.665521
vn 0.688513 0.662283 0.295518
vn 0.635737 -0.355089 -0.685383
vn -0.635737 0.355088 0.685384
vn 0.688512 0.662283 0.295519
vn -0.635737 0.355089 0.685383
vn -0.688512 -0.662283 -0.295519
vn 0.635737 -0.355089 -0.685384
vn -0.635737 0.355089 0.685384
s off
f 287//30 288//30 289//30 290//30
f 288//31 287//31 291//31 292//31
f 290//32 289//32 293//32 294//32
f 295//33 296//33 297//33 298//33
f 299//34 300//34 301//34 302//34
f 303//33 304//33 305//33 306//33
f 307//35 308//35 309//35 310//35
f 311//36 312//36 313//36 314//36
f 315//35 316//35 317//35 318//35
f 318//37 317//37 312//37 311//37
f 311//37 319//37 320//37 318//37
f 318//33 320//33 321//33 315//33
f 314//38 322//38 319//38 311//38
f 310//35 323//35 324//35 307//35
f 306//39 325//39 326//39 303//39
f 302//34 327//34 328//34 299//34
f 298//33 289//33 288//33 295//33
f 295//40 288//40 327//40 302//40
f 299//37 328//37 289//37 298//37
f 329//33 330//33 316//33 331//33
f 332//33 321//33 333//33 334//33
f 385//7 386//7 419//7 418//7
f 336//38 335//38 322//38 337//38
f 337//38 328//38 338//38 336//38
f 386//7 388//7 421//7 419//7
f 334//33 293//33 289//33 332//33
f 332//41 289//41 328//41 337//41
f 335//38 339//38 319//38 322//38
f 328//38 327//38 340//38 338//38
f 372//7 339//7 408//7 414//7
f 327//31 288//31 292//31 340//31
f 341//33 342//33 308//33 343//33
f 344//41 345//41 342//41 341//41
f 346//32 347//32 348//32 349//32
f 350//40 351//40 352//40 353//40
f 353//42 352//42 347//42 346//42
f 349//41 348//41 351//41 350//41
f 350//41 354//41 355//41 349//41
f 356//41 330//41 357//41 358//41
f 358//41 359//41 345//41 356//41
f 360//42 361//42 362//42 363//42
f 364//41 365//41 366//41 367//41
f 291//7 373//7 415//7 399//7
f 340//7 292//7 400//7 409//7
f 334//7 333//7 403//7 404//7
f 373//7 389//7 422//7 415//7
f 376//41 287//41 290//41 375//41
f 287//43 376//43 373//43 291//43
f 294//37 374//37 375//37 290//37
f 306//37 305//37 347//37 377//37
f 378//31 352//31 304//31 303//31
f 377//38 347//38 352//38 378//38
f 379//38 362//38 361//38 380//38
f 310//32 309//32 362//32 379//32
f 380//31 361//31 308//31 307//31
f 307//31 324//31 366//31 380//31
f 343//44 308//44 361//44 381//44
f 382//41 366//41 324//41 383//41
f 379//32 365//32 323//32 310//32
f 380//38 366//38 365//38 379//38
f 378//34 376//34 375//34 377//34
f 303//31 326//31 376//31 378//31
f 377//37 375//37 325//37 306//37
f 381//38 361//38 345//38 344//38
f 384//38 369//38 366//38 382//38
f 389//7 387//7 420//7 422//7
f 383//33 324//33 386//33 385//33
f 385//33 387//33 325//33 383//33
f 292//7 291//7 399//7 400//7
f 382//38 375//38 374//38 384//38
f 383//41 325//41 375//41 382//41
f 324//33 323//33 388//33 386//33
f 387//35 389//35 326//35 325//35
f 293//7 334//7 404//7 401//7
f 389//43 373//43 376//43 326//43
f 312//45 317//45 357//45 390//45
f 357//46 330//46 391//46 390//46
f 314//31 313//31 316//31 315//31
f 315//31 321//31 322//31 314//31
f 360//31 316//31 330//31 356//31
f 358//45 357//45 317//45 363//45
f 363//44 317//44 316//44 360//44
f 367//30 321//30 320//30 364//30
f 364//32 320//32 372//32 371//32
f 368//40 333//40 321//40 367//40
f 331//44 316//44 313//44 392//44
f 337//46 322//46 321//46 332//46
f 388//7 370//7 412//7 421//7
f 339//32 372//32 320//32 319//32
f 393//37 359//37 362//37 309//37
f 393//41 342//41 345//41 359//41
f 356//40 345//40 361//40 360//40
f 363//37 362//37 359//37 358//37
f 371//32 370//32 365//32 364//32
f 367//40 366//40 369//40 368//40
f 374//7 294//7 402//7 416//7
f 323//32 365//32 370//32 388//32
f 346//44 297//44 296//44 353//44
f 353//40 296//40 354//40 350//40
f 349//32 355//32 297//32 346//32
f 302//40 301//40 296//40 295//40
f 298//37 297//37 300//37 299//37
f 394//41 391//41 330//41 329//41
f 392//38 313//38 391//38 394//38
f 394//38 395//38 300//38 392//38
f 329//41 355//41 395//41 394//41
f 331//33 297//33 355//33 329//33
f 392//44 300//44 297//44 331//44
f 313//34 312//34 390//34 391//34
f 395//38 396//38 301//38 300//38
f 396//41 395//41 355//41 354//41
f 396//40 354//40 296//40 301//40
f 343//33 305//33 397//33 341//33
f 341//41 397//41 348//41 344//41
f 344//38 348//38 347//38 381//38
f 381//47 347//47 305//47 343//47
f 342//33 393//33 309//33 308//33
f 305//33 304//33 398//33 397//33
f 351//41 348//41 397//41 398//41
f 304//40 352//40 351//40 398//40
f 404//44 403//44 405//44 406//44
f 406//44 407//44 401//44 404//44
f 400//44 401//44 407//44 409//44
f 410//44 411//44 412//44 413//44
f 413//44 414//44 403//44 410//44
f 402//44 401//44 400//44 399//44
f 399//44 415//44 416//44 402//44
f 418//44 419//44 411//44 417//44
f 417//44 416//44 420//44 418//44
f 422//47 420//47 416//47 415//47
f 408//44 405//44 403//44 414//44
f 412//44 411//44 419//44 421//44
f 368//7 369//7 411//7 410//7
f 335//7 336//7 406//7 405//7
f 370//7 371//7 413//7 412//7
f 336//7 338//7 407//7 406//7
f 338//7 340//7 409//7 407//7
f 339//7 335//7 405//7 408//7
f 294//7 293//7 401//7 402//7
f 371//7 372//7 414//7 413//7
f 369//7 384//7 417//7 411//7
f 333//7 368//7 410//7 403//7
f 387//7 385//7 418//7 420//7
f 384//7 374//7 416//7 417//7
f 394//7 392//7 425//7 426//7
f 331//7 329//7 423//7 424//7
f 392//7 331//7 424//7 425//7
f 329//7 394//7 426//7 423//7
f 316//7 331//7 429//7 428//7
f 331//7 297//7 427//7 429//7

View File

@ -0,0 +1,22 @@
#
# Copyright 2013 Dario Manesku. All rights reserved.
# License: http://www.opensource.org/licenses/BSD-2-Clause
#
BGFX_DIR=../..
RUNTIME_DIR=$(BGFX_DIR)/examples/runtime
BUILD_DIR=../../.build
include $(BGFX_DIR)/premake/shader.mk
geometry: ../runtime/meshes/column.bin
../runtime/meshes/column.bin: column.obj
../../tools/bin/geometryc -f column.obj -o ../runtime/meshes/column.bin --packnormal 1
rebuild:
@make -s --no-print-directory TARGET=0 clean all
@make -s --no-print-directory TARGET=1 clean all
@make -s --no-print-directory TARGET=2 clean all
@make -s --no-print-directory TARGET=3 clean all
@make -s --no-print-directory TARGET=4 clean all

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0);
vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0);
vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0);
vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0);
vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 0.0, 0.0);
vec3 v_view : TEXCOORD5 = vec3(0.0, 0.0, 0.0);
vec4 v_shadowcoord : TEXCOORD6 = vec4(0.0, 0.0, 0.0, 0.0);
vec4 v_position : TEXCOORD7 = vec4(0.0, 0.0, 0.0, 0.0);
vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0);
float v_depth : FOG = 0.0;
vec3 a_position : POSITION;
vec4 a_normal : NORMAL;
vec2 a_texcoord0 : TEXCOORD0;

View File

@ -0,0 +1,13 @@
$input a_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
}

View File

@ -0,0 +1,25 @@
$input a_position, a_normal
$output v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform mat4 u_lightMtx;
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec3 posOffset = a_position + normal.xyz * u_shadowMapOffset;
v_shadowcoord = mul(u_lightMtx, vec4(posOffset, 1.0) );
}

View File

@ -0,0 +1,36 @@
$input a_position, a_normal
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
uniform mat4 u_lightMtx;
uniform mat4 u_shadowMapMtx0;
uniform mat4 u_shadowMapMtx1;
uniform mat4 u_shadowMapMtx2;
uniform mat4 u_shadowMapMtx3;
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec4 posOffset = vec4(a_position + normal.xyz * u_shadowMapOffset, 1.0);
v_position = mul(u_modelView, posOffset);
vec4 wpos = vec4(mul(u_model[0], posOffset).xyz, 1.0);
v_texcoord1 = mul(u_shadowMapMtx0, wpos);
v_texcoord2 = mul(u_shadowMapMtx1, wpos);
v_texcoord3 = mul(u_shadowMapMtx2, wpos);
v_texcoord4 = mul(u_shadowMapMtx3, wpos);
}

View File

@ -0,0 +1,26 @@
$input a_position, a_normal, a_texcoord0
$output v_normal, v_view, v_shadowcoord
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform mat4 u_lightMtx;
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec3 posOffset = a_position + normal.xyz * u_shadowMapOffset;
v_shadowcoord = mul(u_lightMtx, vec4(posOffset, 1.0) );
v_shadowcoord.z += 0.5;
}

View File

@ -0,0 +1,41 @@
$input a_position, a_normal
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
uniform mat4 u_lightMtx;
uniform mat4 u_shadowMapMtx0;
uniform mat4 u_shadowMapMtx1;
uniform mat4 u_shadowMapMtx2;
uniform mat4 u_shadowMapMtx3;
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec4 posOffset = vec4(a_position + normal.xyz * u_shadowMapOffset, 1.0);
v_position = mul(u_modelView, posOffset);
vec4 wpos = vec4(mul(u_model[0], posOffset).xyz, 1.0);
v_texcoord1 = mul(u_shadowMapMtx0, wpos);
v_texcoord2 = mul(u_shadowMapMtx1, wpos);
v_texcoord3 = mul(u_shadowMapMtx2, wpos);
v_texcoord4 = mul(u_shadowMapMtx3, wpos);
v_texcoord1.z += 0.5;
v_texcoord2.z += 0.5;
v_texcoord3.z += 0.5;
v_texcoord4.z += 0.5;
}

View File

@ -0,0 +1,40 @@
$input a_position, a_normal
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
uniform mat4 u_lightMtx;
uniform mat4 u_shadowMapMtx0;
uniform mat4 u_shadowMapMtx1;
uniform mat4 u_shadowMapMtx2;
uniform mat4 u_shadowMapMtx3;
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec4 posOffset = vec4(a_position + normal.xyz * u_shadowMapOffset, 1.0);
v_position = mul(u_lightMtx, posOffset);
v_texcoord1 = mul(u_shadowMapMtx0, v_position);
v_texcoord2 = mul(u_shadowMapMtx1, v_position);
v_texcoord3 = mul(u_shadowMapMtx2, v_position);
v_texcoord4 = mul(u_shadowMapMtx3, v_position);
v_texcoord1.z += 0.5;
v_texcoord2.z += 0.5;
v_texcoord3.z += 0.5;
v_texcoord4.z += 0.5;
}

View File

@ -0,0 +1,35 @@
$input a_position, a_normal
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_params1;
#define u_shadowMapOffset u_params1.y
uniform mat4 u_lightMtx;
uniform mat4 u_shadowMapMtx0;
uniform mat4 u_shadowMapMtx1;
uniform mat4 u_shadowMapMtx2;
uniform mat4 u_shadowMapMtx3;
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
vec4 posOffset = vec4(a_position + normal.xyz * u_shadowMapOffset, 1.0);
v_position = mul(u_lightMtx, posOffset);
v_texcoord1 = mul(u_shadowMapMtx0, v_position);
v_texcoord2 = mul(u_shadowMapMtx1, v_position);
v_texcoord3 = mul(u_shadowMapMtx2, v_position);
v_texcoord4 = mul(u_shadowMapMtx3, v_position);
}

View File

@ -0,0 +1,16 @@
$input a_position, a_texcoord0
$output v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_texcoord0 = a_texcoord0;
}

View File

@ -0,0 +1,13 @@
$input a_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0));
}

View File

@ -0,0 +1,32 @@
$input a_position, a_texcoord0
$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2011-2013 Branimir Karadzic. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_smSamplingParams;
#define u_xOffset u_smSamplingParams.z
void main()
{
float offset = u_viewTexel.x*u_xOffset;
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_texcoord0 = a_texcoord0;
v_texcoord1 = vec4(a_texcoord0.x - offset*1.0, a_texcoord0.y,
a_texcoord0.x + offset*1.0, a_texcoord0.y
);
v_texcoord2 = vec4(a_texcoord0.x - offset*2.0, a_texcoord0.y,
a_texcoord0.x + offset*2.0, a_texcoord0.y
);
v_texcoord3 = vec4(a_texcoord0.x - offset*3.0, a_texcoord0.y,
a_texcoord0.x + offset*3.0, a_texcoord0.y
);
v_texcoord4 = vec4(a_texcoord0.x - offset*4.0, a_texcoord0.y,
a_texcoord0.x + offset*4.0, a_texcoord0.y
);
}

View File

@ -0,0 +1,15 @@
$input a_position
$output v_position
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_position = gl_Position;
}

View File

@ -0,0 +1,15 @@
$input a_position
$output v_depth
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_depth = gl_Position.z * 0.5 + 0.5;
}

View File

@ -0,0 +1,16 @@
$input a_position, a_texcoord0
$output v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_texcoord0 = a_texcoord0;
}

View File

@ -0,0 +1,20 @@
$input a_position, a_normal, a_texcoord0
$output v_normal, v_view, v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0));
vec4 normal = a_normal * 2.0 - 1.0;
v_normal = mul(u_modelView, vec4(normal.xyz, 0.0)).xyz;
v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
v_texcoord0 = a_texcoord0;
}

View File

@ -0,0 +1,16 @@
$input a_position, a_texcoord0
$output v_texcoord0
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
void main()
{
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_texcoord0 = a_texcoord0;
}

View File

@ -0,0 +1,32 @@
$input a_position, a_texcoord0
$output v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
/*
* Copyright 2013 Dario Manesku. All rights reserved.
* License: http://www.opensource.org/licenses/BSD-2-Clause
*/
#include "../common/common.sh"
uniform vec4 u_smSamplingParams;
#define u_yOffset u_smSamplingParams.w
void main()
{
float offset = u_viewTexel.y*u_yOffset;
gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
v_texcoord0 = a_texcoord0;
v_texcoord1 = vec4(a_texcoord0.x, a_texcoord0.y - offset*1.0,
a_texcoord0.x, a_texcoord0.y + offset*1.0
);
v_texcoord2 = vec4(a_texcoord0.x, a_texcoord0.y - offset*2.0,
a_texcoord0.x, a_texcoord0.y + offset*2.0
);
v_texcoord3 = vec4(a_texcoord0.x, a_texcoord0.y - offset*3.0,
a_texcoord0.x, a_texcoord0.y + offset*3.0
);
v_texcoord4 = vec4(a_texcoord0.x, a_texcoord0.y - offset*4.0,
a_texcoord0.x, a_texcoord0.y + offset*4.0
);
}

View File

@ -104,6 +104,35 @@ namespace entry
return 0; return 0;
} }
int cmdMove(CmdContext* /*_context*/, void* /*_userData*/, int _argc, char const* const* _argv)
{
if (_argc > 1)
{
if (0 == strcmp(_argv[1], "forward") )
{
cameraSetKeyState(CAMERA_KEY_UP, true);
return 0;
}
else if (0 == strcmp(_argv[1], "left") )
{
cameraSetKeyState(CAMERA_KEY_LEFT, true);
return 0;
}
else if (0 == strcmp(_argv[1], "right") )
{
cameraSetKeyState(CAMERA_KEY_RIGHT, true);
return 0;
}
else if (0 == strcmp(_argv[1], "backward") )
{
cameraSetKeyState(CAMERA_KEY_DOWN, true);
return 0;
}
}
return 1;
}
static const InputBinding s_bindings[] = static const InputBinding s_bindings[] =
{ {
{ entry::Key::KeyQ, entry::Modifier::LeftCtrl, 1, cmd, "exit" }, { entry::Key::KeyQ, entry::Modifier::LeftCtrl, 1, cmd, "exit" },
@ -129,7 +158,7 @@ namespace entry
int main(int _argc, char** _argv) int main(int _argc, char** _argv)
{ {
DBG(BX_COMPILER_NAME " / " BX_CPU_NAME " / " BX_ARCH_NAME " / " BX_PLATFORM_NAME); //DBG(BX_COMPILER_NAME " / " BX_CPU_NAME " / " BX_ARCH_NAME " / " BX_PLATFORM_NAME);
cmdAdd("mouselock", cmdMouseLock); cmdAdd("mouselock", cmdMouseLock);
cmdAdd("graphics", cmdGraphics ); cmdAdd("graphics", cmdGraphics );

View File

@ -24,6 +24,16 @@ inline float fmaxf(float _a, float _b)
} }
#endif // BX_COMPILER_MSVC #endif // BX_COMPILER_MSVC
inline float toRad(float _deg)
{
return _deg * float(M_PI) / 180.0f;
}
inline float toDeg(float _rad)
{
return _rad * 180.0f / float(M_PI);
}
inline float fclamp(float _a, float _min, float _max) inline float fclamp(float _a, float _min, float _max)
{ {
return fminf(fmaxf(_a, _min), _max); return fminf(fmaxf(_a, _min), _max);

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,293 @@
FSHF<>­œuniform sampler2D u_shadowMap3;
uniform sampler2D u_shadowMap2;
uniform sampler2D u_shadowMap1;
uniform sampler2D u_shadowMap0;
uniform vec4 u_csmFarDistances;
uniform vec4 u_smSamplingParams;
uniform vec4 u_lightAttenuationSpotOuter;
uniform vec4 u_lightSpotDirectionInner;
uniform vec4 u_lightSpecularPower;
uniform vec4 u_lightDiffusePower;
uniform vec4 u_lightAmbientPower;
uniform vec4 u_lightPosition;
uniform vec4 u_materialKs;
uniform vec3 u_materialKd;
uniform vec3 u_materialKa;
uniform vec4 u_color;
uniform vec4 u_params2;
uniform vec4 u_params1;
varying vec3 v_view;
varying vec4 v_texcoord4;
varying vec4 v_texcoord3;
varying vec4 v_texcoord2;
varying vec4 v_texcoord1;
varying vec4 v_position;
varying vec3 v_normal;
void main ()
{
float visibility_1;
vec3 colorCoverage_2;
vec2 tmpvar_3;
tmpvar_3 = u_params2.zz;
visibility_1 = 1.0;
if ((v_position.z < u_csmFarDistances.x)) {
vec2 tmpvar_4;
tmpvar_4 = (v_texcoord1.xy / v_texcoord1.w);
float tmpvar_5;
tmpvar_5 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_4, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_4, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_6;
tmpvar_6.x = -(tmpvar_5);
tmpvar_6.y = tmpvar_5;
tmpvar_6.z = -(tmpvar_5);
colorCoverage_2 = tmpvar_6;
vec4 _shadowCoord_7;
_shadowCoord_7 = v_texcoord1;
float _bias_8;
_bias_8 = u_params1.x;
vec4 _pcfParams_9;
_pcfParams_9 = u_smSamplingParams;
vec2 _texelSize_10;
_texelSize_10 = tmpvar_3;
int x_11;
int ynum_12;
int xnum_13;
float result_14;
vec2 tmpvar_15;
tmpvar_15 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_16;
tmpvar_16 = (tmpvar_15.x * tmpvar_15.y);
result_14 = 0.0;
int tmpvar_17;
tmpvar_17 = int(u_smSamplingParams.x);
xnum_13 = tmpvar_17;
ynum_12 = int(u_smSamplingParams.y);
x_11 = -(tmpvar_17);
while (true) {
int y_18;
if ((x_11 > xnum_13)) {
break;
};
y_18 = -(ynum_12);
while (true) {
if ((y_18 > ynum_12)) {
break;
};
vec2 tmpvar_19;
tmpvar_19.x = float(x_11);
tmpvar_19.y = float(y_18);
vec4 tmpvar_20;
tmpvar_20.zw = vec2(0.0, 0.0);
tmpvar_20.xy = ((tmpvar_19 * _pcfParams_9.zw) * _texelSize_10);
vec4 tmpvar_21;
tmpvar_21 = (_shadowCoord_7 + tmpvar_20);
result_14 = (result_14 + float((dot (texture2D (u_shadowMap0, (tmpvar_21.xy / tmpvar_21.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_21.z - _bias_8) / tmpvar_21.w))));
y_18 = (y_18 + 1);
};
x_11 = (x_11 + 1);
};
visibility_1 = (result_14 / max (tmpvar_16, 1.0));
} else {
if ((v_position.z < u_csmFarDistances.y)) {
vec2 tmpvar_22;
tmpvar_22 = (v_texcoord2.xy / v_texcoord2.w);
float tmpvar_23;
tmpvar_23 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_22, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_22, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_24;
tmpvar_24.x = tmpvar_23;
tmpvar_24.y = tmpvar_23;
tmpvar_24.z = -(tmpvar_23);
colorCoverage_2 = tmpvar_24;
vec4 _shadowCoord_25;
_shadowCoord_25 = v_texcoord2;
float _bias_26;
_bias_26 = u_params1.x;
vec4 _pcfParams_27;
_pcfParams_27 = u_smSamplingParams;
vec2 _texelSize_28;
_texelSize_28 = (u_params2.zz / 2.0);
int x_29;
int ynum_30;
int xnum_31;
float result_32;
vec2 tmpvar_33;
tmpvar_33 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_34;
tmpvar_34 = (tmpvar_33.x * tmpvar_33.y);
result_32 = 0.0;
int tmpvar_35;
tmpvar_35 = int(u_smSamplingParams.x);
xnum_31 = tmpvar_35;
ynum_30 = int(u_smSamplingParams.y);
x_29 = -(tmpvar_35);
while (true) {
int y_36;
if ((x_29 > xnum_31)) {
break;
};
y_36 = -(ynum_30);
while (true) {
if ((y_36 > ynum_30)) {
break;
};
vec2 tmpvar_37;
tmpvar_37.x = float(x_29);
tmpvar_37.y = float(y_36);
vec4 tmpvar_38;
tmpvar_38.zw = vec2(0.0, 0.0);
tmpvar_38.xy = ((tmpvar_37 * _pcfParams_27.zw) * _texelSize_28);
vec4 tmpvar_39;
tmpvar_39 = (_shadowCoord_25 + tmpvar_38);
result_32 = (result_32 + float((dot (texture2D (u_shadowMap1, (tmpvar_39.xy / tmpvar_39.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_39.z - _bias_26) / tmpvar_39.w))));
y_36 = (y_36 + 1);
};
x_29 = (x_29 + 1);
};
visibility_1 = (result_32 / max (tmpvar_34, 1.0));
} else {
if ((v_position.z < u_csmFarDistances.z)) {
vec2 tmpvar_40;
tmpvar_40 = (v_texcoord3.xy / v_texcoord3.w);
float tmpvar_41;
tmpvar_41 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_40, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_40, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_42;
tmpvar_42.x = -(tmpvar_41);
tmpvar_42.y = -(tmpvar_41);
tmpvar_42.z = tmpvar_41;
colorCoverage_2 = tmpvar_42;
vec4 _shadowCoord_43;
_shadowCoord_43 = v_texcoord3;
float _bias_44;
_bias_44 = u_params1.x;
vec4 _pcfParams_45;
_pcfParams_45 = u_smSamplingParams;
vec2 _texelSize_46;
_texelSize_46 = (u_params2.zz / 3.0);
int x_47;
int ynum_48;
int xnum_49;
float result_50;
vec2 tmpvar_51;
tmpvar_51 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_52;
tmpvar_52 = (tmpvar_51.x * tmpvar_51.y);
result_50 = 0.0;
int tmpvar_53;
tmpvar_53 = int(u_smSamplingParams.x);
xnum_49 = tmpvar_53;
ynum_48 = int(u_smSamplingParams.y);
x_47 = -(tmpvar_53);
while (true) {
int y_54;
if ((x_47 > xnum_49)) {
break;
};
y_54 = -(ynum_48);
while (true) {
if ((y_54 > ynum_48)) {
break;
};
vec2 tmpvar_55;
tmpvar_55.x = float(x_47);
tmpvar_55.y = float(y_54);
vec4 tmpvar_56;
tmpvar_56.zw = vec2(0.0, 0.0);
tmpvar_56.xy = ((tmpvar_55 * _pcfParams_45.zw) * _texelSize_46);
vec4 tmpvar_57;
tmpvar_57 = (_shadowCoord_43 + tmpvar_56);
result_50 = (result_50 + float((dot (texture2D (u_shadowMap2, (tmpvar_57.xy / tmpvar_57.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_57.z - _bias_44) / tmpvar_57.w))));
y_54 = (y_54 + 1);
};
x_47 = (x_47 + 1);
};
visibility_1 = (result_50 / max (tmpvar_52, 1.0));
} else {
vec2 tmpvar_58;
tmpvar_58 = (v_texcoord4.xy / v_texcoord4.w);
float tmpvar_59;
tmpvar_59 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_58, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_58, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_60;
tmpvar_60.x = tmpvar_59;
tmpvar_60.y = -(tmpvar_59);
tmpvar_60.z = -(tmpvar_59);
colorCoverage_2 = tmpvar_60;
vec4 _shadowCoord_61;
_shadowCoord_61 = v_texcoord4;
float _bias_62;
_bias_62 = u_params1.x;
vec4 _pcfParams_63;
_pcfParams_63 = u_smSamplingParams;
vec2 _texelSize_64;
_texelSize_64 = (u_params2.zz / 4.0);
int x_65;
int ynum_66;
int xnum_67;
float result_68;
vec2 tmpvar_69;
tmpvar_69 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_70;
tmpvar_70 = (tmpvar_69.x * tmpvar_69.y);
result_68 = 0.0;
int tmpvar_71;
tmpvar_71 = int(u_smSamplingParams.x);
xnum_67 = tmpvar_71;
ynum_66 = int(u_smSamplingParams.y);
x_65 = -(tmpvar_71);
while (true) {
int y_72;
if ((x_65 > xnum_67)) {
break;
};
y_72 = -(ynum_66);
while (true) {
if ((y_72 > ynum_66)) {
break;
};
vec2 tmpvar_73;
tmpvar_73.x = float(x_65);
tmpvar_73.y = float(y_72);
vec4 tmpvar_74;
tmpvar_74.zw = vec2(0.0, 0.0);
tmpvar_74.xy = ((tmpvar_73 * _pcfParams_63.zw) * _texelSize_64);
vec4 tmpvar_75;
tmpvar_75 = (_shadowCoord_61 + tmpvar_74);
result_68 = (result_68 + float((dot (texture2D (u_shadowMap3, (tmpvar_75.xy / tmpvar_75.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_75.z - _bias_62) / tmpvar_75.w))));
y_72 = (y_72 + 1);
};
x_65 = (x_65 + 1);
};
visibility_1 = (result_68 / max (tmpvar_70, 1.0));
};
};
};
vec3 tmpvar_76;
tmpvar_76 = -(normalize(v_view));
vec3 tmpvar_77;
float tmpvar_78;
tmpvar_77 = -(normalize(u_lightPosition.xyz));
tmpvar_78 = 1.0;
if ((0.0 != u_lightPosition.w)) {
vec3 tmpvar_79;
tmpvar_79 = (u_lightPosition.xyz - v_view);
vec3 tmpvar_80;
tmpvar_80 = normalize(tmpvar_79);
tmpvar_77 = tmpvar_80;
float tmpvar_81;
tmpvar_81 = cos((u_lightAttenuationSpotOuter.w * 0.0174533));
float tmpvar_82;
tmpvar_82 = sqrt(dot (tmpvar_79, tmpvar_79));
tmpvar_78 = ((1.0/(((u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_82)) + ((u_lightAttenuationSpotOuter.z * tmpvar_82) * tmpvar_82)))) * mix (clamp (((max (0.0, dot (-(tmpvar_80), normalize(u_lightSpotDirectionInner.xyz))) - tmpvar_81) / (cos((min (u_lightSpotDirectionInner.w, (u_lightAttenuationSpotOuter.w - 0.001)) * 0.0174533)) - tmpvar_81)), 0.0, 1.0), 1.0, float((u_lightAttenuationSpotOuter.w >= 90.0))));
};
float tmpvar_83;
tmpvar_83 = dot (v_normal, tmpvar_77);
vec2 tmpvar_84;
tmpvar_84.x = tmpvar_83;
tmpvar_84.y = (((float((tmpvar_83 >= 0.0)) * pow (max (0.0, dot ((((2.0 * tmpvar_83) * v_normal) - tmpvar_77), tmpvar_76)), u_materialKs.w)) * (2.0 + u_materialKs.w)) / 8.0);
vec2 tmpvar_85;
tmpvar_85 = (max (tmpvar_84, 0.0) * tmpvar_78);
float tmpvar_86;
tmpvar_86 = sqrt(dot (v_view, v_view));
gl_FragColor.xyz = mix (vec3(0.0, 0.0, 0.0), (pow (((((u_lightAmbientPower.xyz * u_lightAmbientPower.w) * u_materialKa) * u_color.xyz) + ((((((u_lightDiffusePower.xyz * u_lightDiffusePower.w) * u_materialKd) * tmpvar_85.x) + (((u_lightSpecularPower.xyz * u_lightSpecularPower.w) * u_materialKs.xyz) * tmpvar_85.y)) * u_color.xyz) * visibility_1)), vec3(0.454545, 0.454545, 0.454545)) + (colorCoverage_2 * u_params2.y)), clamp ((1.0/(exp2(((4.36415e-05 * tmpvar_86) * tmpvar_86)))), 0.0, 1.0));
gl_FragColor.w = 1.0;
}

View File

@ -0,0 +1,321 @@
FSHF<>­œuniform sampler2D u_shadowMap3;
uniform sampler2D u_shadowMap2;
uniform sampler2D u_shadowMap1;
uniform sampler2D u_shadowMap0;
uniform vec4 u_csmFarDistances;
uniform vec4 u_smSamplingParams;
uniform vec4 u_lightAttenuationSpotOuter;
uniform vec4 u_lightSpotDirectionInner;
uniform vec4 u_lightSpecularPower;
uniform vec4 u_lightDiffusePower;
uniform vec4 u_lightAmbientPower;
uniform vec4 u_lightPosition;
uniform vec4 u_materialKs;
uniform vec3 u_materialKd;
uniform vec3 u_materialKa;
uniform vec4 u_color;
uniform vec4 u_params2;
uniform vec4 u_params1;
varying vec3 v_view;
varying vec4 v_texcoord4;
varying vec4 v_texcoord3;
varying vec4 v_texcoord2;
varying vec4 v_texcoord1;
varying vec4 v_position;
varying vec3 v_normal;
void main ()
{
float visibility_1;
vec3 colorCoverage_2;
vec2 tmpvar_3;
tmpvar_3 = u_params2.zz;
visibility_1 = 1.0;
if ((v_position.z < u_csmFarDistances.x)) {
vec2 tmpvar_4;
tmpvar_4 = (v_texcoord1.xy / v_texcoord1.w);
float tmpvar_5;
tmpvar_5 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_4, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_4, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_6;
tmpvar_6.x = -(tmpvar_5);
tmpvar_6.y = tmpvar_5;
tmpvar_6.z = -(tmpvar_5);
colorCoverage_2 = tmpvar_6;
vec4 tmpvar_7;
tmpvar_7.w = 1.0;
tmpvar_7.xy = (v_texcoord1.xy / v_texcoord1.w);
tmpvar_7.z = v_texcoord1.z;
vec4 tmpvar_8;
tmpvar_8.xy = u_smSamplingParams.xy;
tmpvar_8.zw = (u_smSamplingParams.zw / v_texcoord1.w);
vec4 _shadowCoord_9;
_shadowCoord_9 = tmpvar_7;
float _bias_10;
_bias_10 = u_params1.x;
vec4 _pcfParams_11;
_pcfParams_11 = tmpvar_8;
vec2 _texelSize_12;
_texelSize_12 = tmpvar_3;
int x_13;
int ynum_14;
int xnum_15;
float result_16;
vec2 tmpvar_17;
tmpvar_17 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_18;
tmpvar_18 = (tmpvar_17.x * tmpvar_17.y);
result_16 = 0.0;
int tmpvar_19;
tmpvar_19 = int(u_smSamplingParams.x);
xnum_15 = tmpvar_19;
ynum_14 = int(u_smSamplingParams.y);
x_13 = -(tmpvar_19);
while (true) {
int y_20;
if ((x_13 > xnum_15)) {
break;
};
y_20 = -(ynum_14);
while (true) {
if ((y_20 > ynum_14)) {
break;
};
vec2 tmpvar_21;
tmpvar_21.x = float(x_13);
tmpvar_21.y = float(y_20);
vec4 tmpvar_22;
tmpvar_22.zw = vec2(0.0, 0.0);
tmpvar_22.xy = ((tmpvar_21 * _pcfParams_11.zw) * _texelSize_12);
vec4 tmpvar_23;
tmpvar_23 = (_shadowCoord_9 + tmpvar_22);
result_16 = (result_16 + float((dot (texture2D (u_shadowMap0, (tmpvar_23.xy / tmpvar_23.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_23.z - _bias_10) / tmpvar_23.w))));
y_20 = (y_20 + 1);
};
x_13 = (x_13 + 1);
};
visibility_1 = (result_16 / max (tmpvar_18, 1.0));
} else {
if ((v_position.z < u_csmFarDistances.y)) {
vec2 tmpvar_24;
tmpvar_24 = (v_texcoord2.xy / v_texcoord2.w);
float tmpvar_25;
tmpvar_25 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_24, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_24, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_26;
tmpvar_26.x = tmpvar_25;
tmpvar_26.y = tmpvar_25;
tmpvar_26.z = -(tmpvar_25);
colorCoverage_2 = tmpvar_26;
vec4 tmpvar_27;
tmpvar_27.w = 1.0;
tmpvar_27.xy = (v_texcoord2.xy / v_texcoord2.w);
tmpvar_27.z = v_texcoord2.z;
vec4 tmpvar_28;
tmpvar_28.xy = u_smSamplingParams.xy;
tmpvar_28.zw = (u_smSamplingParams.zw / v_texcoord2.w);
vec4 _shadowCoord_29;
_shadowCoord_29 = tmpvar_27;
float _bias_30;
_bias_30 = u_params1.x;
vec4 _pcfParams_31;
_pcfParams_31 = tmpvar_28;
vec2 _texelSize_32;
_texelSize_32 = (u_params2.zz / 2.0);
int x_33;
int ynum_34;
int xnum_35;
float result_36;
vec2 tmpvar_37;
tmpvar_37 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_38;
tmpvar_38 = (tmpvar_37.x * tmpvar_37.y);
result_36 = 0.0;
int tmpvar_39;
tmpvar_39 = int(u_smSamplingParams.x);
xnum_35 = tmpvar_39;
ynum_34 = int(u_smSamplingParams.y);
x_33 = -(tmpvar_39);
while (true) {
int y_40;
if ((x_33 > xnum_35)) {
break;
};
y_40 = -(ynum_34);
while (true) {
if ((y_40 > ynum_34)) {
break;
};
vec2 tmpvar_41;
tmpvar_41.x = float(x_33);
tmpvar_41.y = float(y_40);
vec4 tmpvar_42;
tmpvar_42.zw = vec2(0.0, 0.0);
tmpvar_42.xy = ((tmpvar_41 * _pcfParams_31.zw) * _texelSize_32);
vec4 tmpvar_43;
tmpvar_43 = (_shadowCoord_29 + tmpvar_42);
result_36 = (result_36 + float((dot (texture2D (u_shadowMap1, (tmpvar_43.xy / tmpvar_43.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_43.z - _bias_30) / tmpvar_43.w))));
y_40 = (y_40 + 1);
};
x_33 = (x_33 + 1);
};
visibility_1 = (result_36 / max (tmpvar_38, 1.0));
} else {
if ((v_position.z < u_csmFarDistances.z)) {
vec2 tmpvar_44;
tmpvar_44 = (v_texcoord3.xy / v_texcoord3.w);
float tmpvar_45;
tmpvar_45 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_44, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_44, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_46;
tmpvar_46.x = -(tmpvar_45);
tmpvar_46.y = -(tmpvar_45);
tmpvar_46.z = tmpvar_45;
colorCoverage_2 = tmpvar_46;
vec4 tmpvar_47;
tmpvar_47.w = 1.0;
tmpvar_47.xy = (v_texcoord3.xy / v_texcoord3.w);
tmpvar_47.z = v_texcoord3.z;
vec4 tmpvar_48;
tmpvar_48.xy = u_smSamplingParams.xy;
tmpvar_48.zw = (u_smSamplingParams.zw / v_texcoord3.w);
vec4 _shadowCoord_49;
_shadowCoord_49 = tmpvar_47;
float _bias_50;
_bias_50 = u_params1.x;
vec4 _pcfParams_51;
_pcfParams_51 = tmpvar_48;
vec2 _texelSize_52;
_texelSize_52 = (u_params2.zz / 3.0);
int x_53;
int ynum_54;
int xnum_55;
float result_56;
vec2 tmpvar_57;
tmpvar_57 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_58;
tmpvar_58 = (tmpvar_57.x * tmpvar_57.y);
result_56 = 0.0;
int tmpvar_59;
tmpvar_59 = int(u_smSamplingParams.x);
xnum_55 = tmpvar_59;
ynum_54 = int(u_smSamplingParams.y);
x_53 = -(tmpvar_59);
while (true) {
int y_60;
if ((x_53 > xnum_55)) {
break;
};
y_60 = -(ynum_54);
while (true) {
if ((y_60 > ynum_54)) {
break;
};
vec2 tmpvar_61;
tmpvar_61.x = float(x_53);
tmpvar_61.y = float(y_60);
vec4 tmpvar_62;
tmpvar_62.zw = vec2(0.0, 0.0);
tmpvar_62.xy = ((tmpvar_61 * _pcfParams_51.zw) * _texelSize_52);
vec4 tmpvar_63;
tmpvar_63 = (_shadowCoord_49 + tmpvar_62);
result_56 = (result_56 + float((dot (texture2D (u_shadowMap2, (tmpvar_63.xy / tmpvar_63.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_63.z - _bias_50) / tmpvar_63.w))));
y_60 = (y_60 + 1);
};
x_53 = (x_53 + 1);
};
visibility_1 = (result_56 / max (tmpvar_58, 1.0));
} else {
vec2 tmpvar_64;
tmpvar_64 = (v_texcoord4.xy / v_texcoord4.w);
float tmpvar_65;
tmpvar_65 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_64, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_64, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_66;
tmpvar_66.x = tmpvar_65;
tmpvar_66.y = -(tmpvar_65);
tmpvar_66.z = -(tmpvar_65);
colorCoverage_2 = tmpvar_66;
vec4 tmpvar_67;
tmpvar_67.w = 1.0;
tmpvar_67.xy = (v_texcoord4.xy / v_texcoord4.w);
tmpvar_67.z = v_texcoord4.z;
vec4 tmpvar_68;
tmpvar_68.xy = u_smSamplingParams.xy;
tmpvar_68.zw = (u_smSamplingParams.zw / v_texcoord4.w);
vec4 _shadowCoord_69;
_shadowCoord_69 = tmpvar_67;
float _bias_70;
_bias_70 = u_params1.x;
vec4 _pcfParams_71;
_pcfParams_71 = tmpvar_68;
vec2 _texelSize_72;
_texelSize_72 = (u_params2.zz / 4.0);
int x_73;
int ynum_74;
int xnum_75;
float result_76;
vec2 tmpvar_77;
tmpvar_77 = ((u_smSamplingParams.xy * 2.0) + 1.0);
float tmpvar_78;
tmpvar_78 = (tmpvar_77.x * tmpvar_77.y);
result_76 = 0.0;
int tmpvar_79;
tmpvar_79 = int(u_smSamplingParams.x);
xnum_75 = tmpvar_79;
ynum_74 = int(u_smSamplingParams.y);
x_73 = -(tmpvar_79);
while (true) {
int y_80;
if ((x_73 > xnum_75)) {
break;
};
y_80 = -(ynum_74);
while (true) {
if ((y_80 > ynum_74)) {
break;
};
vec2 tmpvar_81;
tmpvar_81.x = float(x_73);
tmpvar_81.y = float(y_80);
vec4 tmpvar_82;
tmpvar_82.zw = vec2(0.0, 0.0);
tmpvar_82.xy = ((tmpvar_81 * _pcfParams_71.zw) * _texelSize_72);
vec4 tmpvar_83;
tmpvar_83 = (_shadowCoord_69 + tmpvar_82);
result_76 = (result_76 + float((dot (texture2D (u_shadowMap3, (tmpvar_83.xy / tmpvar_83.w)), vec4(5.96046e-08, 1.52588e-05, 0.00390625, 1.0)) >= ((tmpvar_83.z - _bias_70) / tmpvar_83.w))));
y_80 = (y_80 + 1);
};
x_73 = (x_73 + 1);
};
visibility_1 = (result_76 / max (tmpvar_78, 1.0));
};
};
};
vec3 tmpvar_84;
tmpvar_84 = -(normalize(v_view));
vec3 tmpvar_85;
float tmpvar_86;
tmpvar_85 = -(normalize(u_lightPosition.xyz));
tmpvar_86 = 1.0;
if ((0.0 != u_lightPosition.w)) {
vec3 tmpvar_87;
tmpvar_87 = (u_lightPosition.xyz - v_view);
vec3 tmpvar_88;
tmpvar_88 = normalize(tmpvar_87);
tmpvar_85 = tmpvar_88;
float tmpvar_89;
tmpvar_89 = cos((u_lightAttenuationSpotOuter.w * 0.0174533));
float tmpvar_90;
tmpvar_90 = sqrt(dot (tmpvar_87, tmpvar_87));
tmpvar_86 = ((1.0/(((u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_90)) + ((u_lightAttenuationSpotOuter.z * tmpvar_90) * tmpvar_90)))) * mix (clamp (((max (0.0, dot (-(tmpvar_88), normalize(u_lightSpotDirectionInner.xyz))) - tmpvar_89) / (cos((min (u_lightSpotDirectionInner.w, (u_lightAttenuationSpotOuter.w - 0.001)) * 0.0174533)) - tmpvar_89)), 0.0, 1.0), 1.0, float((u_lightAttenuationSpotOuter.w >= 90.0))));
};
float tmpvar_91;
tmpvar_91 = dot (v_normal, tmpvar_85);
vec2 tmpvar_92;
tmpvar_92.x = tmpvar_91;
tmpvar_92.y = (((float((tmpvar_91 >= 0.0)) * pow (max (0.0, dot ((((2.0 * tmpvar_91) * v_normal) - tmpvar_85), tmpvar_84)), u_materialKs.w)) * (2.0 + u_materialKs.w)) / 8.0);
vec2 tmpvar_93;
tmpvar_93 = (max (tmpvar_92, 0.0) * tmpvar_86);
float tmpvar_94;
tmpvar_94 = sqrt(dot (v_view, v_view));
gl_FragColor.xyz = mix (vec3(0.0, 0.0, 0.0), (pow (((((u_lightAmbientPower.xyz * u_lightAmbientPower.w) * u_materialKa) * u_color.xyz) + ((((((u_lightDiffusePower.xyz * u_lightDiffusePower.w) * u_materialKd) * tmpvar_93.x) + (((u_lightSpecularPower.xyz * u_lightSpecularPower.w) * u_materialKs.xyz) * tmpvar_93.y)) * u_color.xyz) * visibility_1)), vec3(0.454545, 0.454545, 0.454545)) + (colorCoverage_2 * u_params2.y)), clamp ((1.0/(exp2(((4.36415e-05 * tmpvar_94) * tmpvar_94)))), 0.0, 1.0));
gl_FragColor.w = 1.0;
}

View File

@ -0,0 +1,194 @@
FSHF<>­œuniform sampler2D u_shadowMap3;
uniform sampler2D u_shadowMap2;
uniform sampler2D u_shadowMap1;
uniform sampler2D u_shadowMap0;
uniform vec4 u_csmFarDistances;
uniform vec4 u_lightAttenuationSpotOuter;
uniform vec4 u_lightSpotDirectionInner;
uniform vec4 u_lightSpecularPower;
uniform vec4 u_lightDiffusePower;
uniform vec4 u_lightAmbientPower;
uniform vec4 u_lightPosition;
uniform vec4 u_materialKs;
uniform vec3 u_materialKd;
uniform vec3 u_materialKa;
uniform vec4 u_color;
uniform vec4 u_params2;
uniform vec4 u_params1;
varying vec3 v_view;
varying vec4 v_texcoord4;
varying vec4 v_texcoord3;
varying vec4 v_texcoord2;
varying vec4 v_texcoord1;
varying vec4 v_position;
varying vec3 v_normal;
void main ()
{
float visibility_1;
vec3 colorCoverage_2;
visibility_1 = 1.0;
if ((v_position.z < u_csmFarDistances.x)) {
vec2 tmpvar_3;
tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w);
float tmpvar_4;
tmpvar_4 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_3, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_3, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_5;
tmpvar_5.x = -(tmpvar_4);
tmpvar_5.y = tmpvar_4;
tmpvar_5.z = -(tmpvar_4);
colorCoverage_2 = tmpvar_5;
float tmpvar_6;
float tmpvar_7;
tmpvar_7 = (((v_texcoord1.z - u_params1.x) / v_texcoord1.w) * u_params1.w);
vec2 tmpvar_8;
tmpvar_8 = (v_texcoord1.xy / v_texcoord1.w);
vec4 tmpvar_9;
tmpvar_9 = texture2D (u_shadowMap0, tmpvar_8);
vec2 tmpvar_10;
tmpvar_10.x = dot (tmpvar_9.xy, vec2(0.00390625, 1.0));
tmpvar_10.y = dot (tmpvar_9.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_11;
tmpvar_11 = (tmpvar_10 * u_params1.w);
if ((tmpvar_7 < tmpvar_11.x)) {
tmpvar_6 = 1.0;
} else {
float tmpvar_12;
tmpvar_12 = max ((tmpvar_11.y - (tmpvar_11.x * tmpvar_11.x)), u_params1.z);
float tmpvar_13;
tmpvar_13 = (tmpvar_7 - tmpvar_11.x);
tmpvar_6 = mix ((tmpvar_12 / (tmpvar_12 + (tmpvar_13 * tmpvar_13))), 1.0, float(any(greaterThan (tmpvar_8, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_6;
} else {
if ((v_position.z < u_csmFarDistances.y)) {
vec2 tmpvar_14;
tmpvar_14 = (v_texcoord2.xy / v_texcoord2.w);
float tmpvar_15;
tmpvar_15 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_14, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_14, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_16;
tmpvar_16.x = tmpvar_15;
tmpvar_16.y = tmpvar_15;
tmpvar_16.z = -(tmpvar_15);
colorCoverage_2 = tmpvar_16;
float tmpvar_17;
float tmpvar_18;
tmpvar_18 = (((v_texcoord2.z - u_params1.x) / v_texcoord2.w) * u_params1.w);
vec2 tmpvar_19;
tmpvar_19 = (v_texcoord2.xy / v_texcoord2.w);
vec4 tmpvar_20;
tmpvar_20 = texture2D (u_shadowMap1, tmpvar_19);
vec2 tmpvar_21;
tmpvar_21.x = dot (tmpvar_20.xy, vec2(0.00390625, 1.0));
tmpvar_21.y = dot (tmpvar_20.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_22;
tmpvar_22 = (tmpvar_21 * u_params1.w);
if ((tmpvar_18 < tmpvar_22.x)) {
tmpvar_17 = 1.0;
} else {
float tmpvar_23;
tmpvar_23 = max ((tmpvar_22.y - (tmpvar_22.x * tmpvar_22.x)), u_params1.z);
float tmpvar_24;
tmpvar_24 = (tmpvar_18 - tmpvar_22.x);
tmpvar_17 = mix ((tmpvar_23 / (tmpvar_23 + (tmpvar_24 * tmpvar_24))), 1.0, float(any(greaterThan (tmpvar_19, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_17;
} else {
if ((v_position.z < u_csmFarDistances.z)) {
vec2 tmpvar_25;
tmpvar_25 = (v_texcoord3.xy / v_texcoord3.w);
float tmpvar_26;
tmpvar_26 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_25, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_25, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_27;
tmpvar_27.x = -(tmpvar_26);
tmpvar_27.y = -(tmpvar_26);
tmpvar_27.z = tmpvar_26;
colorCoverage_2 = tmpvar_27;
float tmpvar_28;
float tmpvar_29;
tmpvar_29 = (((v_texcoord3.z - u_params1.x) / v_texcoord3.w) * u_params1.w);
vec2 tmpvar_30;
tmpvar_30 = (v_texcoord3.xy / v_texcoord3.w);
vec4 tmpvar_31;
tmpvar_31 = texture2D (u_shadowMap2, tmpvar_30);
vec2 tmpvar_32;
tmpvar_32.x = dot (tmpvar_31.xy, vec2(0.00390625, 1.0));
tmpvar_32.y = dot (tmpvar_31.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_33;
tmpvar_33 = (tmpvar_32 * u_params1.w);
if ((tmpvar_29 < tmpvar_33.x)) {
tmpvar_28 = 1.0;
} else {
float tmpvar_34;
tmpvar_34 = max ((tmpvar_33.y - (tmpvar_33.x * tmpvar_33.x)), u_params1.z);
float tmpvar_35;
tmpvar_35 = (tmpvar_29 - tmpvar_33.x);
tmpvar_28 = mix ((tmpvar_34 / (tmpvar_34 + (tmpvar_35 * tmpvar_35))), 1.0, float(any(greaterThan (tmpvar_30, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_28;
} else {
vec2 tmpvar_36;
tmpvar_36 = (v_texcoord4.xy / v_texcoord4.w);
float tmpvar_37;
tmpvar_37 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_36, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_36, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_38;
tmpvar_38.x = tmpvar_37;
tmpvar_38.y = -(tmpvar_37);
tmpvar_38.z = -(tmpvar_37);
colorCoverage_2 = tmpvar_38;
float tmpvar_39;
float tmpvar_40;
tmpvar_40 = (((v_texcoord4.z - u_params1.x) / v_texcoord4.w) * u_params1.w);
vec2 tmpvar_41;
tmpvar_41 = (v_texcoord4.xy / v_texcoord4.w);
vec4 tmpvar_42;
tmpvar_42 = texture2D (u_shadowMap3, tmpvar_41);
vec2 tmpvar_43;
tmpvar_43.x = dot (tmpvar_42.xy, vec2(0.00390625, 1.0));
tmpvar_43.y = dot (tmpvar_42.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_44;
tmpvar_44 = (tmpvar_43 * u_params1.w);
if ((tmpvar_40 < tmpvar_44.x)) {
tmpvar_39 = 1.0;
} else {
float tmpvar_45;
tmpvar_45 = max ((tmpvar_44.y - (tmpvar_44.x * tmpvar_44.x)), u_params1.z);
float tmpvar_46;
tmpvar_46 = (tmpvar_40 - tmpvar_44.x);
tmpvar_39 = mix ((tmpvar_45 / (tmpvar_45 + (tmpvar_46 * tmpvar_46))), 1.0, float(any(greaterThan (tmpvar_41, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_39;
};
};
};
vec3 tmpvar_47;
tmpvar_47 = -(normalize(v_view));
vec3 tmpvar_48;
float tmpvar_49;
tmpvar_48 = -(normalize(u_lightPosition.xyz));
tmpvar_49 = 1.0;
if ((0.0 != u_lightPosition.w)) {
vec3 tmpvar_50;
tmpvar_50 = (u_lightPosition.xyz - v_view);
vec3 tmpvar_51;
tmpvar_51 = normalize(tmpvar_50);
tmpvar_48 = tmpvar_51;
float tmpvar_52;
tmpvar_52 = cos((u_lightAttenuationSpotOuter.w * 0.0174533));
float tmpvar_53;
tmpvar_53 = sqrt(dot (tmpvar_50, tmpvar_50));
tmpvar_49 = ((1.0/(((u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_53)) + ((u_lightAttenuationSpotOuter.z * tmpvar_53) * tmpvar_53)))) * mix (clamp (((max (0.0, dot (-(tmpvar_51), normalize(u_lightSpotDirectionInner.xyz))) - tmpvar_52) / (cos((min (u_lightSpotDirectionInner.w, (u_lightAttenuationSpotOuter.w - 0.001)) * 0.0174533)) - tmpvar_52)), 0.0, 1.0), 1.0, float((u_lightAttenuationSpotOuter.w >= 90.0))));
};
float tmpvar_54;
tmpvar_54 = dot (v_normal, tmpvar_48);
vec2 tmpvar_55;
tmpvar_55.x = tmpvar_54;
tmpvar_55.y = (((float((tmpvar_54 >= 0.0)) * pow (max (0.0, dot ((((2.0 * tmpvar_54) * v_normal) - tmpvar_48), tmpvar_47)), u_materialKs.w)) * (2.0 + u_materialKs.w)) / 8.0);
vec2 tmpvar_56;
tmpvar_56 = (max (tmpvar_55, 0.0) * tmpvar_49);
float tmpvar_57;
tmpvar_57 = sqrt(dot (v_view, v_view));
gl_FragColor.xyz = mix (vec3(0.0, 0.0, 0.0), (pow (((((u_lightAmbientPower.xyz * u_lightAmbientPower.w) * u_materialKa) * u_color.xyz) + ((((((u_lightDiffusePower.xyz * u_lightDiffusePower.w) * u_materialKd) * tmpvar_56.x) + (((u_lightSpecularPower.xyz * u_lightSpecularPower.w) * u_materialKs.xyz) * tmpvar_56.y)) * u_color.xyz) * visibility_1)), vec3(0.454545, 0.454545, 0.454545)) + (colorCoverage_2 * u_params2.y)), clamp ((1.0/(exp2(((4.36415e-05 * tmpvar_57) * tmpvar_57)))), 0.0, 1.0));
gl_FragColor.w = 1.0;
}

View File

@ -0,0 +1,202 @@
FSHF<>­œuniform sampler2D u_shadowMap3;
uniform sampler2D u_shadowMap2;
uniform sampler2D u_shadowMap1;
uniform sampler2D u_shadowMap0;
uniform vec4 u_csmFarDistances;
uniform vec4 u_lightAttenuationSpotOuter;
uniform vec4 u_lightSpotDirectionInner;
uniform vec4 u_lightSpecularPower;
uniform vec4 u_lightDiffusePower;
uniform vec4 u_lightAmbientPower;
uniform vec4 u_lightPosition;
uniform vec4 u_materialKs;
uniform vec3 u_materialKd;
uniform vec3 u_materialKa;
uniform vec4 u_color;
uniform vec4 u_params2;
uniform vec4 u_params1;
varying vec3 v_view;
varying vec4 v_texcoord4;
varying vec4 v_texcoord3;
varying vec4 v_texcoord2;
varying vec4 v_texcoord1;
varying vec4 v_position;
varying vec3 v_normal;
void main ()
{
float visibility_1;
vec3 colorCoverage_2;
visibility_1 = 1.0;
if ((v_position.z < u_csmFarDistances.x)) {
vec2 tmpvar_3;
tmpvar_3 = (v_texcoord1.xy / v_texcoord1.w);
float tmpvar_4;
tmpvar_4 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_3, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_3, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_5;
tmpvar_5.x = -(tmpvar_4);
tmpvar_5.y = tmpvar_4;
tmpvar_5.z = -(tmpvar_4);
colorCoverage_2 = tmpvar_5;
vec4 tmpvar_6;
tmpvar_6.w = 1.0;
tmpvar_6.xy = (v_texcoord1.xy / v_texcoord1.w);
tmpvar_6.z = v_texcoord1.z;
float tmpvar_7;
float tmpvar_8;
tmpvar_8 = ((v_texcoord1.z - u_params1.x) * u_params1.w);
vec4 tmpvar_9;
tmpvar_9 = texture2D (u_shadowMap0, tmpvar_6.xy);
vec2 tmpvar_10;
tmpvar_10.x = dot (tmpvar_9.xy, vec2(0.00390625, 1.0));
tmpvar_10.y = dot (tmpvar_9.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_11;
tmpvar_11 = (tmpvar_10 * u_params1.w);
if ((tmpvar_8 < tmpvar_11.x)) {
tmpvar_7 = 1.0;
} else {
float tmpvar_12;
tmpvar_12 = max ((tmpvar_11.y - (tmpvar_11.x * tmpvar_11.x)), u_params1.z);
float tmpvar_13;
tmpvar_13 = (tmpvar_8 - tmpvar_11.x);
tmpvar_7 = mix ((tmpvar_12 / (tmpvar_12 + (tmpvar_13 * tmpvar_13))), 1.0, float(any(greaterThan (tmpvar_6.xy, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_7;
} else {
if ((v_position.z < u_csmFarDistances.y)) {
vec2 tmpvar_14;
tmpvar_14 = (v_texcoord2.xy / v_texcoord2.w);
float tmpvar_15;
tmpvar_15 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_14, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_14, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_16;
tmpvar_16.x = tmpvar_15;
tmpvar_16.y = tmpvar_15;
tmpvar_16.z = -(tmpvar_15);
colorCoverage_2 = tmpvar_16;
vec4 tmpvar_17;
tmpvar_17.w = 1.0;
tmpvar_17.xy = (v_texcoord2.xy / v_texcoord2.w);
tmpvar_17.z = v_texcoord2.z;
float tmpvar_18;
float tmpvar_19;
tmpvar_19 = ((v_texcoord2.z - u_params1.x) * u_params1.w);
vec4 tmpvar_20;
tmpvar_20 = texture2D (u_shadowMap1, tmpvar_17.xy);
vec2 tmpvar_21;
tmpvar_21.x = dot (tmpvar_20.xy, vec2(0.00390625, 1.0));
tmpvar_21.y = dot (tmpvar_20.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_22;
tmpvar_22 = (tmpvar_21 * u_params1.w);
if ((tmpvar_19 < tmpvar_22.x)) {
tmpvar_18 = 1.0;
} else {
float tmpvar_23;
tmpvar_23 = max ((tmpvar_22.y - (tmpvar_22.x * tmpvar_22.x)), u_params1.z);
float tmpvar_24;
tmpvar_24 = (tmpvar_19 - tmpvar_22.x);
tmpvar_18 = mix ((tmpvar_23 / (tmpvar_23 + (tmpvar_24 * tmpvar_24))), 1.0, float(any(greaterThan (tmpvar_17.xy, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_18;
} else {
if ((v_position.z < u_csmFarDistances.z)) {
vec2 tmpvar_25;
tmpvar_25 = (v_texcoord3.xy / v_texcoord3.w);
float tmpvar_26;
tmpvar_26 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_25, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_25, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_27;
tmpvar_27.x = -(tmpvar_26);
tmpvar_27.y = -(tmpvar_26);
tmpvar_27.z = tmpvar_26;
colorCoverage_2 = tmpvar_27;
vec4 tmpvar_28;
tmpvar_28.w = 1.0;
tmpvar_28.xy = (v_texcoord3.xy / v_texcoord3.w);
tmpvar_28.z = v_texcoord3.z;
float tmpvar_29;
float tmpvar_30;
tmpvar_30 = ((v_texcoord3.z - u_params1.x) * u_params1.w);
vec4 tmpvar_31;
tmpvar_31 = texture2D (u_shadowMap2, tmpvar_28.xy);
vec2 tmpvar_32;
tmpvar_32.x = dot (tmpvar_31.xy, vec2(0.00390625, 1.0));
tmpvar_32.y = dot (tmpvar_31.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_33;
tmpvar_33 = (tmpvar_32 * u_params1.w);
if ((tmpvar_30 < tmpvar_33.x)) {
tmpvar_29 = 1.0;
} else {
float tmpvar_34;
tmpvar_34 = max ((tmpvar_33.y - (tmpvar_33.x * tmpvar_33.x)), u_params1.z);
float tmpvar_35;
tmpvar_35 = (tmpvar_30 - tmpvar_33.x);
tmpvar_29 = mix ((tmpvar_34 / (tmpvar_34 + (tmpvar_35 * tmpvar_35))), 1.0, float(any(greaterThan (tmpvar_28.xy, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_29;
} else {
vec2 tmpvar_36;
tmpvar_36 = (v_texcoord4.xy / v_texcoord4.w);
float tmpvar_37;
tmpvar_37 = (clamp ((1.0 - (float(any(greaterThan (tmpvar_36, vec2(1.0, 1.0)))) + float(any(lessThan (tmpvar_36, vec2(0.0, 0.0)))))), 0.0, 1.0) * 0.4);
vec3 tmpvar_38;
tmpvar_38.x = tmpvar_37;
tmpvar_38.y = -(tmpvar_37);
tmpvar_38.z = -(tmpvar_37);
colorCoverage_2 = tmpvar_38;
vec4 tmpvar_39;
tmpvar_39.w = 1.0;
tmpvar_39.xy = (v_texcoord4.xy / v_texcoord4.w);
tmpvar_39.z = v_texcoord4.z;
float tmpvar_40;
float tmpvar_41;
tmpvar_41 = ((v_texcoord4.z - u_params1.x) * u_params1.w);
vec4 tmpvar_42;
tmpvar_42 = texture2D (u_shadowMap3, tmpvar_39.xy);
vec2 tmpvar_43;
tmpvar_43.x = dot (tmpvar_42.xy, vec2(0.00390625, 1.0));
tmpvar_43.y = dot (tmpvar_42.zw, vec2(0.00390625, 1.0));
vec2 tmpvar_44;
tmpvar_44 = (tmpvar_43 * u_params1.w);
if ((tmpvar_41 < tmpvar_44.x)) {
tmpvar_40 = 1.0;
} else {
float tmpvar_45;
tmpvar_45 = max ((tmpvar_44.y - (tmpvar_44.x * tmpvar_44.x)), u_params1.z);
float tmpvar_46;
tmpvar_46 = (tmpvar_41 - tmpvar_44.x);
tmpvar_40 = mix ((tmpvar_45 / (tmpvar_45 + (tmpvar_46 * tmpvar_46))), 1.0, float(any(greaterThan (tmpvar_39.xy, vec2(0.95, 0.95)))));
};
visibility_1 = tmpvar_40;
};
};
};
vec3 tmpvar_47;
tmpvar_47 = -(normalize(v_view));
vec3 tmpvar_48;
float tmpvar_49;
tmpvar_48 = -(normalize(u_lightPosition.xyz));
tmpvar_49 = 1.0;
if ((0.0 != u_lightPosition.w)) {
vec3 tmpvar_50;
tmpvar_50 = (u_lightPosition.xyz - v_view);
vec3 tmpvar_51;
tmpvar_51 = normalize(tmpvar_50);
tmpvar_48 = tmpvar_51;
float tmpvar_52;
tmpvar_52 = cos((u_lightAttenuationSpotOuter.w * 0.0174533));
float tmpvar_53;
tmpvar_53 = sqrt(dot (tmpvar_50, tmpvar_50));
tmpvar_49 = ((1.0/(((u_lightAttenuationSpotOuter.x + (u_lightAttenuationSpotOuter.y * tmpvar_53)) + ((u_lightAttenuationSpotOuter.z * tmpvar_53) * tmpvar_53)))) * mix (clamp (((max (0.0, dot (-(tmpvar_51), normalize(u_lightSpotDirectionInner.xyz))) - tmpvar_52) / (cos((min (u_lightSpotDirectionInner.w, (u_lightAttenuationSpotOuter.w - 0.001)) * 0.0174533)) - tmpvar_52)), 0.0, 1.0), 1.0, float((u_lightAttenuationSpotOuter.w >= 90.0))));
};
float tmpvar_54;
tmpvar_54 = dot (v_normal, tmpvar_48);
vec2 tmpvar_55;
tmpvar_55.x = tmpvar_54;
tmpvar_55.y = (((float((tmpvar_54 >= 0.0)) * pow (max (0.0, dot ((((2.0 * tmpvar_54) * v_normal) - tmpvar_48), tmpvar_47)), u_materialKs.w)) * (2.0 + u_materialKs.w)) / 8.0);
vec2 tmpvar_56;
tmpvar_56 = (max (tmpvar_55, 0.0) * tmpvar_49);
float tmpvar_57;
tmpvar_57 = sqrt(dot (v_view, v_view));
gl_FragColor.xyz = mix (vec3(0.0, 0.0, 0.0), (pow (((((u_lightAmbientPower.xyz * u_lightAmbientPower.w) * u_materialKa) * u_color.xyz) + ((((((u_lightDiffusePower.xyz * u_lightDiffusePower.w) * u_materialKd) * tmpvar_56.x) + (((u_lightSpecularPower.xyz * u_lightSpecularPower.w) * u_materialKs.xyz) * tmpvar_56.y)) * u_color.xyz) * visibility_1)), vec3(0.454545, 0.454545, 0.454545)) + (colorCoverage_2 * u_params2.y)), clamp ((1.0/(exp2(((4.36415e-05 * tmpvar_57) * tmpvar_57)))), 0.0, 1.0));
gl_FragColor.w = 1.0;
}

Some files were not shown because too many files have changed in this diff Show More