mirror of https://github.com/bkaradzic/bgfx
Added 15-shadowmaps-simple and 16-shadowmaps.
This commit is contained in:
parent
c01085856c
commit
5594e9af8c
|
@ -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;
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
|
@ -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) );
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
|
@ -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
|
@ -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;
|
|
@ -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) );
|
||||||
|
}
|
|
@ -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) );
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
|
@ -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
|
||||||
|
);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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
|
||||||
|
);
|
||||||
|
}
|
|
@ -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 );
|
||||||
|
|
|
@ -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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|