mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2025-04-02 02:19:48 -04:00
Merge pull request #69 from dariomanesku/master
Added 15-shadowmaps-simple and 16-shadowmaps.
This commit is contained in:
commit
a74a1ea806
354 changed files with 35565 additions and 54 deletions
examples
13-stencil
fs_stencil_color_black.scfs_stencil_color_lightning.scfs_stencil_color_texture.scfs_stencil_texture.scfs_stencil_texture_lightning.scmakefilestencil.cppvs_stencil_color.scvs_stencil_color_lightning.scvs_stencil_color_texture.scvs_stencil_texture.scvs_stencil_texture_lightning.sc
14-shadowvolumes
fs_shadowvolume_color_lightning.scfs_shadowvolume_color_texture.scfs_shadowvolume_svbackblank.scfs_shadowvolume_svbackcolor.scfs_shadowvolume_svbacktex1.scfs_shadowvolume_svbacktex2.scfs_shadowvolume_svfrontblank.scfs_shadowvolume_svfrontcolor.scfs_shadowvolume_svfronttex1.scfs_shadowvolume_svfronttex2.scfs_shadowvolume_svside.scfs_shadowvolume_svsideblank.scfs_shadowvolume_svsidecolor.scfs_shadowvolume_svsidetex.scfs_shadowvolume_texture.scfs_shadowvolume_texture_lightning.scmakefileshadowvolumes.cppvs_shadowvolume_color_lightning.scvs_shadowvolume_color_texture.scvs_shadowvolume_svback.scvs_shadowvolume_svfront.scvs_shadowvolume_svside.scvs_shadowvolume_texture.scvs_shadowvolume_texture_lightning.sc
15-shadowmaps-simple
fs_smsimple_draw.scfs_smsimple_packdepth.schollowcube.objmakefilescreenshot.pngshadowmaps_simple.cppvarying.def.scvs_smsimple_draw.scvs_smsimple_packdepth.sc
16-shadowmaps
common.shfs_shadowmaps_color_black.scfs_shadowmaps_color_lightning.shfs_shadowmaps_color_lightning_esm.scfs_shadowmaps_color_lightning_esm_csm.scfs_shadowmaps_color_lightning_esm_linear.scfs_shadowmaps_color_lightning_esm_linear_csm.scfs_shadowmaps_color_lightning_esm_linear_omni.scfs_shadowmaps_color_lightning_esm_omni.scfs_shadowmaps_color_lightning_hard.scfs_shadowmaps_color_lightning_hard_csm.scfs_shadowmaps_color_lightning_hard_linear.scfs_shadowmaps_color_lightning_hard_linear_csm.scfs_shadowmaps_color_lightning_hard_linear_omni.scfs_shadowmaps_color_lightning_hard_omni.scfs_shadowmaps_color_lightning_main.shfs_shadowmaps_color_lightning_pcf.scfs_shadowmaps_color_lightning_pcf_csm.scfs_shadowmaps_color_lightning_pcf_linear.scfs_shadowmaps_color_lightning_pcf_linear_csm.scfs_shadowmaps_color_lightning_pcf_linear_omni.scfs_shadowmaps_color_lightning_pcf_omni.scfs_shadowmaps_color_lightning_vsm.scfs_shadowmaps_color_lightning_vsm_csm.scfs_shadowmaps_color_lightning_vsm_linear.scfs_shadowmaps_color_lightning_vsm_linear_csm.scfs_shadowmaps_color_lightning_vsm_linear_omni.scfs_shadowmaps_color_lightning_vsm_omni.scfs_shadowmaps_color_texture.scfs_shadowmaps_hblur.scfs_shadowmaps_hblur_vsm.scfs_shadowmaps_packdepth.scfs_shadowmaps_packdepth_linear.scfs_shadowmaps_packdepth_vsm.scfs_shadowmaps_packdepth_vsm_linear.scfs_shadowmaps_texture.scfs_shadowmaps_unpackdepth.scfs_shadowmaps_unpackdepth_vsm.scfs_shadowmaps_vblur.scfs_shadowmaps_vblur_vsm.schollowcube.objmakefilescreenshot.pngshadowmaps.cpptree.objvarying.def.scvs_shadowmaps_color.scvs_shadowmaps_color_lightning.scvs_shadowmaps_color_lightning_csm.scvs_shadowmaps_color_lightning_linear.scvs_shadowmaps_color_lightning_linear_csm.scvs_shadowmaps_color_lightning_linear_omni.scvs_shadowmaps_color_lightning_omni.scvs_shadowmaps_color_texture.sc
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_normal, v_view
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_normal, v_view, v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright 2013 Dario Manesku. All rights reserved.
|
||||
# Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
# License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
#
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input a_position
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_normal, a_texcoord0
|
|||
$output v_normal, v_view
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_texcoord0
|
|||
$output v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_texcoord0
|
|||
$output v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_normal, a_texcoord0
|
|||
$output v_normal, v_view, v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_normal, v_view, v_pos
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_k
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_k
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_k
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_k
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input v_normal, v_view, v_texcoord0, v_pos
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright 2013 Dario Manesku. All rights reserved.
|
||||
# Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
# License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
#
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_color0, a_normal, a_texcoord0
|
|||
$output v_normal, v_view, v_pos
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_texcoord0
|
|||
$output v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input a_position
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
$input a_position
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_texcoord0
|
|||
$output v_k
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_texcoord0
|
|||
$output v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ $input a_position, a_normal, a_texcoord0
|
|||
$output v_normal, v_view, v_texcoord0, v_pos
|
||||
|
||||
/*
|
||||
* Copyright 2013 Dario Manesku. All rights reserved.
|
||||
* Copyright 2013-2014 Dario Manesku. All rights reserved.
|
||||
* License: http://www.opensource.org/licenses/BSD-2-Clause
|
||||
*/
|
||||
|
||||
|
|
96
examples/15-shadowmaps-simple/fs_smsimple_draw.sc
Normal file
96
examples/15-shadowmaps-simple/fs_smsimple_draw.sc
Normal file
|
@ -0,0 +1,96 @@
|
|||
$input v_view, v_normal, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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;
|
||||
}
|
15
examples/15-shadowmaps-simple/fs_smsimple_packdepth.sc
Normal file
15
examples/15-shadowmaps-simple/fs_smsimple_packdepth.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_position
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
||||
|
934
examples/15-shadowmaps-simple/hollowcube.obj
Normal file
934
examples/15-shadowmaps-simple/hollowcube.obj
Normal file
|
@ -0,0 +1,934 @@
|
|||
# Blender v2.66 (sub 1) OBJ File: ''
|
||||
# www.blender.org
|
||||
g holeycube
|
||||
v 1.500000 1.211657 0.000000
|
||||
v 1.500000 1.211656 1.209338
|
||||
v 1.236416 1.211656 1.209338
|
||||
v 1.236416 1.211657 0.000000
|
||||
v 1.500000 1.500000 0.000000
|
||||
v 1.500000 1.500000 1.209338
|
||||
v 1.236416 1.500000 1.209338
|
||||
v 1.236416 1.500000 0.000000
|
||||
v 1.500000 -0.000000 1.209337
|
||||
v 1.500000 -1.211657 1.209337
|
||||
v 1.236416 -1.211657 1.209337
|
||||
v 1.236416 -0.000000 1.209337
|
||||
v 1.236416 -0.000000 1.500000
|
||||
v 1.236416 -1.211657 1.500000
|
||||
v 1.500000 -1.211657 1.500000
|
||||
v 1.500000 -0.000000 1.500000
|
||||
v 1.500000 0.000000 -1.500000
|
||||
v 1.500000 -1.211656 -1.500000
|
||||
v 1.236416 -1.211656 -1.500000
|
||||
v 1.236416 0.000000 -1.500000
|
||||
v -1.236416 0.000000 -1.500000
|
||||
v -1.236416 -1.211656 -1.500000
|
||||
v -1.500000 -1.211656 -1.500000
|
||||
v -1.500000 0.000000 -1.500000
|
||||
v -1.500000 -0.000000 1.500000
|
||||
v -1.500000 -1.211657 1.500000
|
||||
v -1.236416 -1.211657 1.500000
|
||||
v -1.236416 -0.000000 1.500000
|
||||
v -1.236416 -0.000000 1.209337
|
||||
v -1.236416 -1.211657 1.209337
|
||||
v -1.500000 -1.211657 1.209337
|
||||
v -1.500000 -0.000000 1.209337
|
||||
v -1.500000 1.211656 1.500000
|
||||
v -1.500000 1.211656 1.209338
|
||||
v -1.236416 1.211656 1.209338
|
||||
v -1.236416 1.211656 1.500000
|
||||
v -1.500000 1.211657 -1.500000
|
||||
v -1.236416 1.211657 -1.500000
|
||||
v 1.236416 1.211657 -1.500000
|
||||
v 1.500000 1.211657 -1.500000
|
||||
v 1.500000 1.211656 1.500000
|
||||
v 1.236416 1.211656 1.500000
|
||||
v 0.000000 -1.500000 1.209337
|
||||
v -1.236416 -1.500000 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
v 0.000000 1.211656 1.209338
|
||||
v -1.236416 1.500000 1.209338
|
||||
v 0.000000 1.500000 1.209338
|
||||
v -1.236416 1.500000 1.500000
|
||||
v 0.000000 1.500000 1.500000
|
||||
v 0.000000 1.211656 1.500000
|
||||
v 1.236416 1.500000 1.500000
|
||||
v -1.500000 1.500000 1.500000
|
||||
v 1.500000 1.500000 1.500000
|
||||
v 0.000000 -1.500000 -1.500000
|
||||
v -1.236416 -1.500000 -1.500000
|
||||
v 0.000000 -1.211656 -1.500000
|
||||
v 0.000000 -1.500000 -1.209338
|
||||
v -1.236416 -1.500000 -1.209338
|
||||
v 1.236416 -1.211657 -0.000000
|
||||
v 1.236416 -1.211656 -1.209338
|
||||
v 1.236416 -1.500000 -1.209338
|
||||
v 1.236416 -1.500000 -0.000000
|
||||
v 1.500000 -1.500000 -0.000000
|
||||
v 1.500000 -1.500000 -1.209338
|
||||
v 1.500000 -1.211656 -1.209338
|
||||
v 1.500000 -1.211657 -0.000000
|
||||
v 1.500000 -1.500000 1.209337
|
||||
v 1.236416 -1.500000 1.209337
|
||||
v -1.236416 -1.500000 -0.000000
|
||||
v -1.500000 -1.500000 1.209337
|
||||
v -1.500000 -1.500000 -0.000000
|
||||
v -1.500000 -1.500000 -1.209338
|
||||
v -1.236416 -1.211657 -0.000000
|
||||
v -1.236416 -1.211656 -1.209338
|
||||
v -1.500000 -1.211656 -1.209338
|
||||
v -1.500000 -1.211657 -0.000000
|
||||
v -1.500000 1.211657 0.000000
|
||||
v -1.500000 1.211657 -1.209337
|
||||
v -1.236416 1.211657 -1.209337
|
||||
v -1.236416 1.211657 0.000000
|
||||
v -1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 -1.209337
|
||||
v -1.500000 1.500000 -1.209337
|
||||
v -1.500000 1.500000 0.000000
|
||||
v -1.500000 1.500000 1.209338
|
||||
v 1.500000 1.500000 -1.209337
|
||||
v 1.236416 1.500000 -1.209337
|
||||
v 1.236416 1.211657 -1.209337
|
||||
v 1.500000 1.211657 -1.209337
|
||||
v 1.236416 0.000000 -1.209337
|
||||
v 1.500000 0.000000 -1.209337
|
||||
v -1.500000 0.000000 -1.209337
|
||||
v -1.236416 0.000000 -1.209337
|
||||
v 0.000000 -1.211656 -1.209338
|
||||
v 0.000000 1.211657 -1.209337
|
||||
v 0.000000 1.211657 -1.500000
|
||||
v 0.000000 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.500000
|
||||
v -1.236416 1.500000 -1.500000
|
||||
v 1.236416 1.500000 -1.500000
|
||||
v -1.500000 1.500000 -1.500000
|
||||
v 1.500000 1.500000 -1.500000
|
||||
v -1.500000 -1.500000 1.500000
|
||||
v -1.236416 -1.500000 1.500000
|
||||
v 0.000000 -1.211657 1.500000
|
||||
v -1.500000 -1.500000 -1.500000
|
||||
v 0.000000 -1.500000 1.500000
|
||||
v 1.236416 -1.500000 1.500000
|
||||
v 1.500000 -1.500000 1.500000
|
||||
v 1.236416 -1.500000 -1.500000
|
||||
v 1.500000 -1.500000 -1.500000
|
||||
v 1.500000 1.500000 0.000000
|
||||
v 1.500000 1.500000 1.209338
|
||||
v 1.236416 1.500000 1.209338
|
||||
v 1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 1.209338
|
||||
v 0.000000 1.500000 1.209338
|
||||
v -1.236416 1.500000 1.500000
|
||||
v 0.000000 1.500000 1.500000
|
||||
v 1.236416 1.500000 1.500000
|
||||
v -1.500000 1.500000 1.500000
|
||||
v 1.500000 1.500000 1.500000
|
||||
v -1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 -1.209337
|
||||
v -1.500000 1.500000 -1.209337
|
||||
v -1.500000 1.500000 0.000000
|
||||
v -1.500000 1.500000 1.209338
|
||||
v 1.500000 1.500000 -1.209337
|
||||
v 1.236416 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.500000
|
||||
v -1.236416 1.500000 -1.500000
|
||||
v 1.236416 1.500000 -1.500000
|
||||
v -1.500000 1.500000 -1.500000
|
||||
v 1.500000 1.500000 -1.500000
|
||||
v 0.000000 -1.500000 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
v 0.000000 -1.211657 1.500000
|
||||
v 0.000000 -1.500000 1.500000
|
||||
v 1.236416 -1.211657 1.209337
|
||||
v -1.236416 -1.211657 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
vn 0.000000 -1.000000 -0.000001
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn -1.000000 -0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -0.000000 1.000000
|
||||
vn 0.000000 0.000001 -1.000000
|
||||
vn 0.000000 0.000000 0.000000
|
||||
vn 0.000000 -1.000000 -0.000000
|
||||
vn 0.000000 1.000000 0.000001
|
||||
vn 0.000000 -0.000001 1.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
s off
|
||||
f 1//1 2//1 3//1 4//1
|
||||
f 2//2 1//2 5//2 6//2
|
||||
f 4//3 3//3 7//3 8//3
|
||||
f 9//4 10//4 11//4 12//4
|
||||
f 13//5 14//5 15//5 16//5
|
||||
f 17//4 18//4 19//4 20//4
|
||||
f 21//4 22//4 23//4 24//4
|
||||
f 25//5 26//5 27//5 28//5
|
||||
f 29//4 30//4 31//4 32//4
|
||||
f 32//3 31//3 26//3 25//3
|
||||
f 25//3 33//3 34//3 32//3
|
||||
f 32//6 34//6 35//6 29//6
|
||||
f 28//5 36//5 33//5 25//5
|
||||
f 24//4 37//4 38//4 21//4
|
||||
f 20//4 39//4 40//4 17//4
|
||||
f 16//5 41//5 42//5 13//5
|
||||
f 12//6 3//6 2//6 9//6
|
||||
f 9//2 2//2 41//2 16//2
|
||||
f 13//3 42//3 3//3 12//3
|
||||
f 43//4 44//4 30//4 45//4
|
||||
f 46//4 35//4 47//4 48//4
|
||||
f 99//7 100//7 133//7 132//7
|
||||
f 50//5 49//5 36//5 51//5
|
||||
f 51//5 42//5 52//5 50//5
|
||||
f 100//7 102//7 135//7 133//7
|
||||
f 48//4 7//4 3//4 46//4
|
||||
f 46//8 3//8 42//8 51//8
|
||||
f 49//5 53//5 33//5 36//5
|
||||
f 42//5 41//5 54//5 52//5
|
||||
f 86//7 53//7 122//7 128//7
|
||||
f 41//2 2//2 6//2 54//2
|
||||
f 55//4 56//4 22//4 57//4
|
||||
f 58//8 59//8 56//8 55//8
|
||||
f 60//3 61//3 62//3 63//3
|
||||
f 64//2 65//2 66//2 67//2
|
||||
f 67//9 66//9 61//9 60//9
|
||||
f 63//8 62//8 65//8 64//8
|
||||
f 64//8 68//8 69//8 63//8
|
||||
f 70//8 44//8 71//8 72//8
|
||||
f 72//8 73//8 59//8 70//8
|
||||
f 74//9 75//9 76//9 77//9
|
||||
f 78//8 79//8 80//8 81//8
|
||||
f 5//7 87//7 129//7 113//7
|
||||
f 54//7 6//7 114//7 123//7
|
||||
f 48//7 47//7 117//7 118//7
|
||||
f 87//7 103//7 136//7 129//7
|
||||
f 90//8 1//8 4//8 89//8
|
||||
f 1//2 90//2 87//2 5//2
|
||||
f 8//3 88//3 89//3 4//3
|
||||
f 20//3 19//3 61//3 91//3
|
||||
f 92//2 66//2 18//2 17//2
|
||||
f 91//10 61//10 66//10 92//10
|
||||
f 93//10 76//10 75//10 94//10
|
||||
f 24//3 23//3 76//3 93//3
|
||||
f 94//2 75//2 22//2 21//2
|
||||
f 21//2 38//2 80//2 94//2
|
||||
f 57//11 22//11 75//11 95//11
|
||||
f 96//8 80//8 38//8 97//8
|
||||
f 93//3 79//3 37//3 24//3
|
||||
f 94//5 80//5 79//5 93//5
|
||||
f 92//5 90//5 89//5 91//5
|
||||
f 17//2 40//2 90//2 92//2
|
||||
f 91//3 89//3 39//3 20//3
|
||||
f 95//5 75//5 59//5 58//5
|
||||
f 98//5 83//5 80//5 96//5
|
||||
f 103//7 101//7 134//7 136//7
|
||||
f 97//4 38//4 100//4 99//4
|
||||
f 99//4 101//4 39//4 97//4
|
||||
f 6//7 5//7 113//7 114//7
|
||||
f 96//5 89//5 88//5 98//5
|
||||
f 97//8 39//8 89//8 96//8
|
||||
f 38//4 37//4 102//4 100//4
|
||||
f 101//4 103//4 40//4 39//4
|
||||
f 7//7 48//7 118//7 115//7
|
||||
f 103//2 87//2 90//2 40//2
|
||||
f 26//3 31//3 71//3 104//3
|
||||
f 71//8 44//8 105//8 104//8
|
||||
f 28//2 27//2 30//2 29//2
|
||||
f 29//2 35//2 36//2 28//2
|
||||
f 74//2 30//2 44//2 70//2
|
||||
f 72//3 71//3 31//3 77//3
|
||||
f 77//11 31//11 30//11 74//11
|
||||
f 81//1 35//1 34//1 78//1
|
||||
f 78//3 34//3 86//3 85//3
|
||||
f 82//2 47//2 35//2 81//2
|
||||
f 45//11 30//11 27//11 106//11
|
||||
f 51//8 36//8 35//8 46//8
|
||||
f 102//7 84//7 126//7 135//7
|
||||
f 53//3 86//3 34//3 33//3
|
||||
f 107//3 73//3 76//3 23//3
|
||||
f 107//8 56//8 59//8 73//8
|
||||
f 70//2 59//2 75//2 74//2
|
||||
f 77//3 76//3 73//3 72//3
|
||||
f 85//3 84//3 79//3 78//3
|
||||
f 81//2 80//2 83//2 82//2
|
||||
f 88//7 8//7 116//7 130//7
|
||||
f 37//3 79//3 84//3 102//3
|
||||
f 60//11 11//11 10//11 67//11
|
||||
f 67//2 10//2 68//2 64//2
|
||||
f 63//3 69//3 11//3 60//3
|
||||
f 16//2 15//2 10//2 9//2
|
||||
f 12//3 11//3 14//3 13//3
|
||||
f 108//8 105//8 44//8 43//8
|
||||
f 106//5 27//5 105//5 108//5
|
||||
f 108//5 109//5 14//5 106//5
|
||||
f 43//8 69//8 109//8 108//8
|
||||
f 45//4 11//4 69//4 43//4
|
||||
f 106//11 14//11 11//11 45//11
|
||||
f 27//5 26//5 104//5 105//5
|
||||
f 109//5 110//5 15//5 14//5
|
||||
f 110//8 109//8 69//8 68//8
|
||||
f 110//2 68//2 10//2 15//2
|
||||
f 57//4 19//4 111//4 55//4
|
||||
f 55//8 111//8 62//8 58//8
|
||||
f 58//5 62//5 61//5 95//5
|
||||
f 95//11 61//11 19//11 57//11
|
||||
f 56//4 107//4 23//4 22//4
|
||||
f 19//4 18//4 112//4 111//4
|
||||
f 65//8 62//8 111//8 112//8
|
||||
f 18//2 66//2 65//2 112//2
|
||||
f 118//11 117//11 119//11 120//11
|
||||
f 120//11 121//11 115//11 118//11
|
||||
f 114//11 115//11 121//11 123//11
|
||||
f 124//11 125//11 126//11 127//11
|
||||
f 127//11 128//11 117//11 124//11
|
||||
f 116//11 115//11 114//11 113//11
|
||||
f 113//11 129//11 130//11 116//11
|
||||
f 132//11 133//11 125//11 131//11
|
||||
f 131//11 130//11 134//11 132//11
|
||||
f 136//11 134//11 130//11 129//11
|
||||
f 122//11 119//11 117//11 128//11
|
||||
f 126//11 125//11 133//11 135//11
|
||||
f 82//7 83//7 125//7 124//7
|
||||
f 49//7 50//7 120//7 119//7
|
||||
f 84//7 85//7 127//7 126//7
|
||||
f 50//7 52//7 121//7 120//7
|
||||
f 52//7 54//7 123//7 121//7
|
||||
f 53//7 49//7 119//7 122//7
|
||||
f 8//7 7//7 115//7 116//7
|
||||
f 85//7 86//7 128//7 127//7
|
||||
f 83//7 98//7 131//7 125//7
|
||||
f 47//7 82//7 124//7 117//7
|
||||
f 101//7 99//7 132//7 134//7
|
||||
f 98//7 88//7 130//7 131//7
|
||||
f 108//7 106//7 139//7 140//7
|
||||
f 45//7 43//7 137//7 138//7
|
||||
f 106//7 45//7 138//7 139//7
|
||||
f 43//7 108//7 140//7 137//7
|
||||
f 30//7 45//7 143//7 142//7
|
||||
f 45//7 11//7 141//7 143//7
|
||||
g holeycube.001
|
||||
v 0.037848 0.053616 0.680965
|
||||
v 0.414385 -0.152030 0.676229
|
||||
v 0.382376 -0.209100 0.609416
|
||||
v 0.005839 -0.003453 0.614153
|
||||
v 0.003506 -0.010911 0.752536
|
||||
v 0.380043 -0.216558 0.747800
|
||||
v 0.348034 -0.273628 0.680987
|
||||
v -0.028503 -0.067981 0.685724
|
||||
v 0.558694 0.119124 0.375479
|
||||
v 0.703003 0.390278 0.074730
|
||||
v 0.670994 0.333208 0.007917
|
||||
v 0.526685 0.062054 0.308667
|
||||
v 0.617185 0.012627 0.307529
|
||||
v 0.761494 0.283781 0.006779
|
||||
v 0.793503 0.340851 0.073591
|
||||
v 0.649194 0.069697 0.374341
|
||||
v -0.284880 0.579845 0.386090
|
||||
v -0.140571 0.850998 0.085340
|
||||
v -0.172580 0.793929 0.018528
|
||||
v -0.316889 0.522775 0.319277
|
||||
v -0.617185 -0.012627 -0.307529
|
||||
v -0.472876 0.258527 -0.608278
|
||||
v -0.504885 0.201457 -0.675091
|
||||
v -0.649194 -0.069697 -0.374341
|
||||
v 0.284880 -0.579845 -0.386090
|
||||
v 0.429189 -0.308690 -0.686840
|
||||
v 0.461198 -0.251621 -0.620027
|
||||
v 0.316889 -0.522775 -0.319277
|
||||
v 0.226389 -0.473348 -0.318139
|
||||
v 0.370698 -0.202194 -0.618889
|
||||
v 0.338689 -0.259263 -0.685701
|
||||
v 0.194380 -0.530418 -0.384952
|
||||
v 0.140571 -0.850998 -0.085340
|
||||
v 0.050071 -0.801571 -0.084202
|
||||
v 0.082080 -0.744502 -0.017389
|
||||
v 0.172580 -0.793929 -0.018528
|
||||
v -0.793503 -0.340851 -0.073591
|
||||
v -0.761494 -0.283781 -0.006779
|
||||
v -0.461198 0.251621 0.620027
|
||||
v -0.429189 0.308690 0.686840
|
||||
v 0.504885 -0.201457 0.675091
|
||||
v 0.472876 -0.258527 0.608278
|
||||
v 0.555187 0.130035 -0.377057
|
||||
v 0.405040 -0.137666 -0.690460
|
||||
v 0.520846 0.065507 -0.305486
|
||||
v 0.232228 -0.476801 0.296014
|
||||
v 0.047738 -0.809030 0.054181
|
||||
v 0.197886 -0.541329 0.367584
|
||||
v 0.138238 -0.858457 0.053043
|
||||
v 0.288386 -0.590756 0.366446
|
||||
v 0.322728 -0.526228 0.294875
|
||||
v 0.438534 -0.323055 0.679849
|
||||
v 0.106229 -0.915526 -0.013769
|
||||
v 0.470543 -0.265985 0.746662
|
||||
v -0.288386 0.590756 -0.366446
|
||||
v -0.438534 0.323055 -0.679849
|
||||
v -0.322728 0.526228 -0.294875
|
||||
v -0.197886 0.541329 -0.367584
|
||||
v -0.348034 0.273628 -0.680987
|
||||
v 0.294457 0.538855 0.012653
|
||||
v -0.082080 0.744502 0.017389
|
||||
v -0.047738 0.809030 -0.054181
|
||||
v 0.328799 0.603383 -0.058918
|
||||
v 0.360808 0.660452 0.007895
|
||||
v -0.015729 0.866099 0.012631
|
||||
v -0.050071 0.801571 0.084202
|
||||
v 0.326466 0.595925 0.079466
|
||||
v 0.737345 0.454805 0.003159
|
||||
v 0.705335 0.397736 -0.063654
|
||||
v 0.028503 0.067981 -0.685724
|
||||
v 0.373030 -0.194736 -0.757272
|
||||
v -0.003506 0.010911 -0.752536
|
||||
v -0.380043 0.216558 -0.747800
|
||||
v -0.005839 0.003453 -0.614153
|
||||
v -0.382376 0.209100 -0.609416
|
||||
v -0.414385 0.152030 -0.676229
|
||||
v -0.037848 -0.053616 -0.680965
|
||||
v -0.326466 -0.595925 -0.079466
|
||||
v -0.703003 -0.390278 -0.074730
|
||||
v -0.670994 -0.333208 -0.007917
|
||||
v -0.294457 -0.538855 -0.012653
|
||||
v -0.328799 -0.603383 0.058918
|
||||
v -0.705335 -0.397736 0.063654
|
||||
v -0.737345 -0.454805 -0.003159
|
||||
v -0.360808 -0.660452 -0.007895
|
||||
v 0.015729 -0.866099 -0.012631
|
||||
v -0.373030 0.194736 0.757272
|
||||
v -0.405040 0.137666 0.690460
|
||||
v -0.370698 0.202194 0.618889
|
||||
v -0.338689 0.259263 0.685701
|
||||
v -0.226389 0.473348 0.318139
|
||||
v -0.194380 0.530418 0.384952
|
||||
v -0.558694 -0.119124 -0.375479
|
||||
v -0.526685 -0.062054 -0.308667
|
||||
v -0.232228 0.476801 -0.296014
|
||||
v -0.520846 -0.065507 0.305486
|
||||
v -0.611346 -0.016080 0.306624
|
||||
v -0.555187 -0.130035 0.377057
|
||||
v -0.645688 -0.080608 0.378195
|
||||
v -0.795836 -0.348309 0.064792
|
||||
v -0.495540 0.187093 0.691598
|
||||
v -0.827845 -0.405378 -0.002021
|
||||
v -0.463531 0.244163 0.758410
|
||||
v 0.463531 -0.244163 -0.758410
|
||||
v 0.495540 -0.187093 -0.691598
|
||||
v 0.611346 0.016080 -0.306624
|
||||
v -0.470543 0.265985 -0.746662
|
||||
v 0.645688 0.080608 -0.378195
|
||||
v 0.795836 0.348309 -0.064792
|
||||
v 0.827845 0.405378 0.002021
|
||||
v -0.138238 0.858457 -0.053043
|
||||
v -0.106229 0.915526 0.013769
|
||||
v 0.003506 -0.010911 0.752536
|
||||
v 0.380043 -0.216558 0.747800
|
||||
v 0.348034 -0.273628 0.680987
|
||||
v -0.028503 -0.067981 0.685724
|
||||
v 0.047738 -0.809030 0.054181
|
||||
v 0.197886 -0.541329 0.367584
|
||||
v 0.138238 -0.858457 0.053043
|
||||
v 0.288386 -0.590756 0.366446
|
||||
v 0.438534 -0.323055 0.679849
|
||||
v 0.106229 -0.915526 -0.013769
|
||||
v 0.470543 -0.265985 0.746662
|
||||
v -0.328799 -0.603383 0.058918
|
||||
v -0.705335 -0.397736 0.063654
|
||||
v -0.737345 -0.454805 -0.003159
|
||||
v -0.360808 -0.660452 -0.007895
|
||||
v 0.015729 -0.866099 -0.012631
|
||||
v -0.373030 0.194736 0.757272
|
||||
v -0.405040 0.137666 0.690460
|
||||
v -0.555187 -0.130035 0.377057
|
||||
v -0.645688 -0.080608 0.378195
|
||||
v -0.795836 -0.348309 0.064792
|
||||
v -0.495540 0.187093 0.691598
|
||||
v -0.827845 -0.405378 -0.002021
|
||||
v -0.463531 0.244163 0.758410
|
||||
v 0.555187 0.130035 -0.377057
|
||||
v 0.520846 0.065507 -0.305486
|
||||
v 0.611346 0.016080 -0.306624
|
||||
v 0.645688 0.080608 -0.378195
|
||||
v 0.670994 0.333208 0.007917
|
||||
v 0.370698 -0.202194 -0.618889
|
||||
v 0.520846 0.065507 -0.305486
|
||||
vn 0.335692 0.630762 -0.699607
|
||||
vn 0.342281 0.610259 0.714442
|
||||
vn -0.342282 -0.610259 -0.714442
|
||||
vn -0.877584 0.479296 0.011038
|
||||
vn 0.877584 -0.479296 -0.011038
|
||||
vn -0.877584 0.479295 0.011038
|
||||
vn -0.342281 -0.610259 -0.714442
|
||||
vn -0.877584 0.479295 0.011039
|
||||
vn 0.877584 -0.479295 -0.011038
|
||||
vn 0.335693 0.630761 -0.699607
|
||||
vn -0.335692 -0.630762 0.699607
|
||||
vn 0.342282 0.610259 0.714442
|
||||
vn 0.877584 -0.479295 -0.011039
|
||||
vn -0.335693 -0.630761 0.699607
|
||||
vn -0.877584 0.479296 0.011039
|
||||
vn 0.335693 0.630761 -0.699608
|
||||
vn 0.877584 -0.479296 -0.011039
|
||||
vn -0.335693 -0.630761 0.699608
|
||||
s off
|
||||
f 144//12 145//12 146//12 147//12
|
||||
f 145//13 144//13 148//13 149//13
|
||||
f 147//14 146//14 150//14 151//14
|
||||
f 152//15 153//15 154//15 155//15
|
||||
f 156//16 157//16 158//16 159//16
|
||||
f 160//15 161//15 162//15 163//15
|
||||
f 164//17 165//17 166//17 167//17
|
||||
f 168//16 169//16 170//16 171//16
|
||||
f 172//15 173//15 174//15 175//15
|
||||
f 175//18 174//18 169//18 168//18
|
||||
f 168//14 176//14 177//14 175//14
|
||||
f 175//19 177//19 178//19 172//19
|
||||
f 171//16 179//16 176//16 168//16
|
||||
f 167//15 180//15 181//15 164//15
|
||||
f 163//15 182//15 183//15 160//15
|
||||
f 159//20 184//20 185//20 156//20
|
||||
f 155//19 146//19 145//19 152//19
|
||||
f 152//13 145//13 184//13 159//13
|
||||
f 156//18 185//18 146//18 155//18
|
||||
f 186//15 187//15 173//15 188//15
|
||||
f 189//15 178//15 190//15 191//15
|
||||
f 242//7 243//7 276//7 275//7
|
||||
f 193//16 192//16 179//16 194//16
|
||||
f 194//16 185//16 195//16 193//16
|
||||
f 243//7 245//7 278//7 276//7
|
||||
f 191//15 150//15 146//15 189//15
|
||||
f 189//21 146//21 185//21 194//21
|
||||
f 192//16 196//16 176//16 179//16
|
||||
f 185//16 184//16 197//16 195//16
|
||||
f 229//7 196//7 265//7 271//7
|
||||
f 184//13 145//13 149//13 197//13
|
||||
f 198//15 199//15 165//15 200//15
|
||||
f 201//21 202//21 199//21 198//21
|
||||
f 203//18 204//18 205//18 206//18
|
||||
f 207//13 208//13 209//13 210//13
|
||||
f 210//22 209//22 204//22 203//22
|
||||
f 206//21 205//21 208//21 207//21
|
||||
f 207//21 211//21 212//21 206//21
|
||||
f 213//21 187//21 214//21 215//21
|
||||
f 215//21 216//21 202//21 213//21
|
||||
f 217//22 218//22 219//22 220//22
|
||||
f 221//21 222//21 223//21 224//21
|
||||
f 148//7 230//7 272//7 256//7
|
||||
f 197//7 149//7 257//7 266//7
|
||||
f 191//7 190//7 260//7 261//7
|
||||
f 230//7 246//7 279//7 272//7
|
||||
f 233//21 144//21 147//21 232//21
|
||||
f 144//13 233//13 230//13 148//13
|
||||
f 151//14 231//14 232//14 147//14
|
||||
f 163//18 162//18 204//18 234//18
|
||||
f 235//23 209//23 161//23 160//23
|
||||
f 234//24 204//24 209//24 235//24
|
||||
f 236//24 219//24 218//24 237//24
|
||||
f 167//18 166//18 219//18 236//18
|
||||
f 237//13 218//13 165//13 164//13
|
||||
f 164//13 181//13 223//13 237//13
|
||||
f 200//25 165//25 218//25 238//25
|
||||
f 239//21 223//21 181//21 240//21
|
||||
f 236//14 222//14 180//14 167//14
|
||||
f 237//16 223//16 222//16 236//16
|
||||
f 235//16 233//16 232//16 234//16
|
||||
f 160//13 183//13 233//13 235//13
|
||||
f 234//18 232//18 182//18 163//18
|
||||
f 238//16 218//16 202//16 201//16
|
||||
f 241//16 226//16 223//16 239//16
|
||||
f 246//7 244//7 277//7 279//7
|
||||
f 240//15 181//15 243//15 242//15
|
||||
f 242//15 244//15 182//15 240//15
|
||||
f 149//7 148//7 256//7 257//7
|
||||
f 239//16 232//16 231//16 241//16
|
||||
f 240//21 182//21 232//21 239//21
|
||||
f 181//26 180//26 245//26 243//26
|
||||
f 244//15 246//15 183//15 182//15
|
||||
f 150//7 191//7 261//7 258//7
|
||||
f 246//13 230//13 233//13 183//13
|
||||
f 169//18 174//18 214//18 247//18
|
||||
f 214//21 187//21 248//21 247//21
|
||||
f 171//13 170//13 173//13 172//13
|
||||
f 172//13 178//13 179//13 171//13
|
||||
f 217//23 173//23 187//23 213//23
|
||||
f 215//18 214//18 174//18 220//18
|
||||
f 220//25 174//25 173//25 217//25
|
||||
f 224//12 178//12 177//12 221//12
|
||||
f 221//18 177//18 229//18 228//18
|
||||
f 225//13 190//13 178//13 224//13
|
||||
f 188//25 173//25 170//25 249//25
|
||||
f 194//21 179//21 178//21 189//21
|
||||
f 245//7 227//7 269//7 278//7
|
||||
f 196//14 229//14 177//14 176//14
|
||||
f 250//18 216//18 219//18 166//18
|
||||
f 250//27 199//27 202//27 216//27
|
||||
f 213//23 202//23 218//23 217//23
|
||||
f 220//18 219//18 216//18 215//18
|
||||
f 228//18 227//18 222//18 221//18
|
||||
f 224//13 223//13 226//13 225//13
|
||||
f 231//7 151//7 259//7 273//7
|
||||
f 180//14 222//14 227//14 245//14
|
||||
f 203//25 154//25 153//25 210//25
|
||||
f 210//13 153//13 211//13 207//13
|
||||
f 206//18 212//18 154//18 203//18
|
||||
f 159//23 158//23 153//23 152//23
|
||||
f 155//18 154//18 157//18 156//18
|
||||
f 251//21 248//21 187//21 186//21
|
||||
f 249//16 170//16 248//16 251//16
|
||||
f 251//16 252//16 157//16 249//16
|
||||
f 186//21 212//21 252//21 251//21
|
||||
f 188//15 154//15 212//15 186//15
|
||||
f 249//25 157//25 154//25 188//25
|
||||
f 170//16 169//16 247//16 248//16
|
||||
f 252//28 253//28 158//28 157//28
|
||||
f 253//21 252//21 212//21 211//21
|
||||
f 253//23 211//23 153//23 158//23
|
||||
f 200//15 162//15 254//15 198//15
|
||||
f 198//21 254//21 205//21 201//21
|
||||
f 201//16 205//16 204//16 238//16
|
||||
f 238//25 204//25 162//25 200//25
|
||||
f 199//15 250//15 166//15 165//15
|
||||
f 162//15 161//15 255//15 254//15
|
||||
f 208//21 205//21 254//21 255//21
|
||||
f 161//23 209//23 208//23 255//23
|
||||
f 261//25 260//25 262//25 263//25
|
||||
f 263//25 264//25 258//25 261//25
|
||||
f 257//29 258//29 264//29 266//29
|
||||
f 267//25 268//25 269//25 270//25
|
||||
f 270//25 271//25 260//25 267//25
|
||||
f 259//25 258//25 257//25 256//25
|
||||
f 256//25 272//25 273//25 259//25
|
||||
f 275//25 276//25 268//25 274//25
|
||||
f 274//25 273//25 277//25 275//25
|
||||
f 279//25 277//25 273//25 272//25
|
||||
f 265//25 262//25 260//25 271//25
|
||||
f 269//25 268//25 276//25 278//25
|
||||
f 225//7 226//7 268//7 267//7
|
||||
f 192//7 193//7 263//7 262//7
|
||||
f 227//7 228//7 270//7 269//7
|
||||
f 193//7 195//7 264//7 263//7
|
||||
f 195//7 197//7 266//7 264//7
|
||||
f 196//7 192//7 262//7 265//7
|
||||
f 151//7 150//7 258//7 259//7
|
||||
f 228//7 229//7 271//7 270//7
|
||||
f 226//7 241//7 274//7 268//7
|
||||
f 190//7 225//7 267//7 260//7
|
||||
f 244//7 242//7 275//7 277//7
|
||||
f 241//7 231//7 273//7 274//7
|
||||
f 251//7 249//7 282//7 283//7
|
||||
f 188//7 186//7 280//7 281//7
|
||||
f 249//7 188//7 281//7 282//7
|
||||
f 186//7 251//7 283//7 280//7
|
||||
f 173//7 188//7 286//7 285//7
|
||||
f 188//7 154//7 284//7 286//7
|
||||
g holeycube.002
|
||||
v 0.369385 2.003562 1.792544
|
||||
v 0.963329 0.880686 2.925211
|
||||
v 0.707927 0.635014 2.815589
|
||||
v 0.113983 1.757890 1.682922
|
||||
v 0.111409 2.147654 2.070667
|
||||
v 0.705351 1.024778 3.203335
|
||||
v 0.449950 0.779106 3.093713
|
||||
v -0.143993 1.901982 1.961045
|
||||
v 2.047380 0.275193 1.756502
|
||||
v 3.131433 -0.330301 0.587792
|
||||
v 2.876031 -0.575973 0.478171
|
||||
v 1.791978 0.029521 1.646880
|
||||
v 1.934732 -0.240361 1.919116
|
||||
v 3.018785 -0.845855 0.750406
|
||||
v 3.274187 -0.600183 0.860028
|
||||
v 2.190134 0.005311 2.028738
|
||||
v 0.716742 2.790825 -0.781068
|
||||
v 1.800794 2.185331 -1.949777
|
||||
v 1.545392 1.939659 -2.059399
|
||||
v 0.461340 2.545153 -0.890690
|
||||
v -1.934732 0.240361 -1.919116
|
||||
v -0.850680 -0.365133 -3.087824
|
||||
v -1.106082 -0.610805 -3.197446
|
||||
v -2.190134 -0.005311 -2.028738
|
||||
v -0.716742 -2.790825 0.781068
|
||||
v 0.367311 -3.396319 -0.387641
|
||||
v 0.622713 -3.150647 -0.278019
|
||||
v -0.461340 -2.545153 0.890690
|
||||
v -0.604093 -2.275271 0.618455
|
||||
v 0.479959 -2.880765 -0.550255
|
||||
v 0.224557 -3.126437 -0.659877
|
||||
v -0.859495 -2.520943 0.508833
|
||||
v -1.800794 -2.185331 1.949777
|
||||
v -1.943547 -1.915450 1.677542
|
||||
v -1.688145 -1.669778 1.787164
|
||||
v -1.545392 -1.939659 2.059399
|
||||
v -3.274187 0.600183 -0.860028
|
||||
v -3.018785 0.845855 -0.750406
|
||||
v -0.622713 3.150647 0.278019
|
||||
v -0.367311 3.396319 0.387641
|
||||
v 1.106082 0.610805 3.197446
|
||||
v 0.850680 0.365133 3.087824
|
||||
v 1.935972 -1.872461 -0.314165
|
||||
v 0.737936 -3.024857 -0.828377
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
v -0.490109 -0.517382 2.301377
|
||||
v -1.946122 -1.525685 2.065288
|
||||
v -0.748086 -0.373290 2.579500
|
||||
v -1.803369 -1.795566 2.337522
|
||||
v -0.605333 -0.643171 2.851735
|
||||
v -0.347356 -0.787263 2.573611
|
||||
v 0.592703 0.509225 3.365948
|
||||
v -2.058771 -2.041239 2.227901
|
||||
v 0.848105 0.754897 3.475569
|
||||
v 0.605333 0.643171 -2.851735
|
||||
v -0.592703 -0.509225 -3.365948
|
||||
v 0.347356 0.787263 -2.573611
|
||||
v 0.748086 0.373290 -2.579500
|
||||
v -0.449950 -0.779106 -3.093713
|
||||
v 2.282089 0.546902 -0.654497
|
||||
v 1.688145 1.669778 -1.787164
|
||||
v 1.946122 1.525685 -2.065288
|
||||
v 2.540065 0.402810 -0.932619
|
||||
v 2.795467 0.648482 -0.822998
|
||||
v 2.201524 1.771358 -1.955666
|
||||
v 1.943547 1.915450 -1.677542
|
||||
v 2.537491 0.792574 -0.544875
|
||||
v 3.389409 -0.474393 0.309670
|
||||
v 3.134007 -0.720065 0.200048
|
||||
v 0.143993 -1.901982 -1.961045
|
||||
v 0.482534 -3.270529 -0.937999
|
||||
v -0.111409 -2.147654 -2.070667
|
||||
v -0.705351 -1.024778 -3.203335
|
||||
v -0.113983 -1.757890 -1.682922
|
||||
v -0.707927 -0.635014 -2.815589
|
||||
v -0.963329 -0.880686 -2.925211
|
||||
v -0.369385 -2.003562 -1.792544
|
||||
v -2.537491 -0.792574 0.544875
|
||||
v -3.131433 0.330301 -0.587792
|
||||
v -2.876031 0.575973 -0.478171
|
||||
v -2.282089 -0.546902 0.654497
|
||||
v -2.540065 -0.402810 0.932619
|
||||
v -3.134007 0.720065 -0.200048
|
||||
v -3.389409 0.474393 -0.309670
|
||||
v -2.795467 -0.648482 0.822998
|
||||
v -2.201524 -1.771358 1.955666
|
||||
v -0.482534 3.270529 0.937999
|
||||
v -0.737936 3.024857 0.828377
|
||||
v -0.479959 2.880765 0.550255
|
||||
v -0.224557 3.126437 0.659877
|
||||
v 0.604093 2.275271 -0.618455
|
||||
v 0.859495 2.520943 -0.508833
|
||||
v -2.047380 -0.275193 -1.756502
|
||||
v -1.791978 -0.029521 -1.646880
|
||||
v 0.490109 0.517382 -2.301377
|
||||
v -1.677995 1.728369 0.036042
|
||||
v -1.820749 1.998251 -0.236193
|
||||
v -1.935972 1.872461 0.314165
|
||||
v -2.078725 2.142343 0.041929
|
||||
v -3.276761 0.989947 -0.472284
|
||||
v -0.880689 3.294739 0.556142
|
||||
v -3.532163 0.744275 -0.581905
|
||||
v -0.625287 3.540411 0.665764
|
||||
v 0.625287 -3.540411 -0.665764
|
||||
v 0.880689 -3.294739 -0.556142
|
||||
v 1.820749 -1.998251 0.236193
|
||||
v -0.848105 -0.754897 -3.475569
|
||||
v 2.078725 -2.142343 -0.041929
|
||||
v 3.276761 -0.989947 0.472284
|
||||
v 3.532163 -0.744275 0.581905
|
||||
v 1.803369 1.795566 -2.337522
|
||||
v 2.058771 2.041239 -2.227901
|
||||
v 0.111409 2.147654 2.070667
|
||||
v 0.705351 1.024778 3.203335
|
||||
v 0.449950 0.779106 3.093713
|
||||
v -0.143993 1.901982 1.961045
|
||||
v -1.946122 -1.525685 2.065288
|
||||
v -0.748086 -0.373290 2.579500
|
||||
v -1.803369 -1.795566 2.337522
|
||||
v -0.605333 -0.643171 2.851735
|
||||
v 0.592703 0.509225 3.365948
|
||||
v -2.058771 -2.041239 2.227901
|
||||
v 0.848105 0.754897 3.475569
|
||||
v -2.540065 -0.402810 0.932619
|
||||
v -3.134007 0.720065 -0.200048
|
||||
v -3.389409 0.474393 -0.309670
|
||||
v -2.795467 -0.648482 0.822998
|
||||
v -2.201524 -1.771358 1.955666
|
||||
v -0.482534 3.270529 0.937999
|
||||
v -0.737936 3.024857 0.828377
|
||||
v -1.935972 1.872461 0.314165
|
||||
v -2.078725 2.142343 0.041929
|
||||
v -3.276761 0.989947 -0.472284
|
||||
v -0.880689 3.294739 0.556142
|
||||
v -3.532163 0.744275 -0.581905
|
||||
v -0.625287 3.540411 0.665764
|
||||
v 1.935972 -1.872461 -0.314165
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
v 1.820749 -1.998251 0.236193
|
||||
v 2.078725 -2.142343 -0.041929
|
||||
v 2.876031 -0.575973 0.478171
|
||||
v 0.479959 -2.880765 -0.550255
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
vn 0.635737 -0.355088 -0.685384
|
||||
vn 0.688513 0.662283 0.295519
|
||||
vn -0.688513 -0.662283 -0.295518
|
||||
vn -0.348983 0.659767 -0.665521
|
||||
vn 0.348982 -0.659767 0.665521
|
||||
vn -0.348982 0.659767 -0.665521
|
||||
vn 0.348982 -0.659768 0.665521
|
||||
vn -0.688513 -0.662283 -0.295519
|
||||
vn 0.348983 -0.659767 0.665521
|
||||
vn -0.348982 0.659768 -0.665521
|
||||
vn 0.688513 0.662283 0.295518
|
||||
vn 0.635737 -0.355089 -0.685383
|
||||
vn -0.635737 0.355088 0.685384
|
||||
vn 0.688512 0.662283 0.295519
|
||||
vn -0.635737 0.355089 0.685383
|
||||
vn -0.688512 -0.662283 -0.295519
|
||||
vn 0.635737 -0.355089 -0.685384
|
||||
vn -0.635737 0.355089 0.685384
|
||||
s off
|
||||
f 287//30 288//30 289//30 290//30
|
||||
f 288//31 287//31 291//31 292//31
|
||||
f 290//32 289//32 293//32 294//32
|
||||
f 295//33 296//33 297//33 298//33
|
||||
f 299//34 300//34 301//34 302//34
|
||||
f 303//33 304//33 305//33 306//33
|
||||
f 307//35 308//35 309//35 310//35
|
||||
f 311//36 312//36 313//36 314//36
|
||||
f 315//35 316//35 317//35 318//35
|
||||
f 318//37 317//37 312//37 311//37
|
||||
f 311//37 319//37 320//37 318//37
|
||||
f 318//33 320//33 321//33 315//33
|
||||
f 314//38 322//38 319//38 311//38
|
||||
f 310//35 323//35 324//35 307//35
|
||||
f 306//39 325//39 326//39 303//39
|
||||
f 302//34 327//34 328//34 299//34
|
||||
f 298//33 289//33 288//33 295//33
|
||||
f 295//40 288//40 327//40 302//40
|
||||
f 299//37 328//37 289//37 298//37
|
||||
f 329//33 330//33 316//33 331//33
|
||||
f 332//33 321//33 333//33 334//33
|
||||
f 385//7 386//7 419//7 418//7
|
||||
f 336//38 335//38 322//38 337//38
|
||||
f 337//38 328//38 338//38 336//38
|
||||
f 386//7 388//7 421//7 419//7
|
||||
f 334//33 293//33 289//33 332//33
|
||||
f 332//41 289//41 328//41 337//41
|
||||
f 335//38 339//38 319//38 322//38
|
||||
f 328//38 327//38 340//38 338//38
|
||||
f 372//7 339//7 408//7 414//7
|
||||
f 327//31 288//31 292//31 340//31
|
||||
f 341//33 342//33 308//33 343//33
|
||||
f 344//41 345//41 342//41 341//41
|
||||
f 346//32 347//32 348//32 349//32
|
||||
f 350//40 351//40 352//40 353//40
|
||||
f 353//42 352//42 347//42 346//42
|
||||
f 349//41 348//41 351//41 350//41
|
||||
f 350//41 354//41 355//41 349//41
|
||||
f 356//41 330//41 357//41 358//41
|
||||
f 358//41 359//41 345//41 356//41
|
||||
f 360//42 361//42 362//42 363//42
|
||||
f 364//41 365//41 366//41 367//41
|
||||
f 291//7 373//7 415//7 399//7
|
||||
f 340//7 292//7 400//7 409//7
|
||||
f 334//7 333//7 403//7 404//7
|
||||
f 373//7 389//7 422//7 415//7
|
||||
f 376//41 287//41 290//41 375//41
|
||||
f 287//43 376//43 373//43 291//43
|
||||
f 294//37 374//37 375//37 290//37
|
||||
f 306//37 305//37 347//37 377//37
|
||||
f 378//31 352//31 304//31 303//31
|
||||
f 377//38 347//38 352//38 378//38
|
||||
f 379//38 362//38 361//38 380//38
|
||||
f 310//32 309//32 362//32 379//32
|
||||
f 380//31 361//31 308//31 307//31
|
||||
f 307//31 324//31 366//31 380//31
|
||||
f 343//44 308//44 361//44 381//44
|
||||
f 382//41 366//41 324//41 383//41
|
||||
f 379//32 365//32 323//32 310//32
|
||||
f 380//38 366//38 365//38 379//38
|
||||
f 378//34 376//34 375//34 377//34
|
||||
f 303//31 326//31 376//31 378//31
|
||||
f 377//37 375//37 325//37 306//37
|
||||
f 381//38 361//38 345//38 344//38
|
||||
f 384//38 369//38 366//38 382//38
|
||||
f 389//7 387//7 420//7 422//7
|
||||
f 383//33 324//33 386//33 385//33
|
||||
f 385//33 387//33 325//33 383//33
|
||||
f 292//7 291//7 399//7 400//7
|
||||
f 382//38 375//38 374//38 384//38
|
||||
f 383//41 325//41 375//41 382//41
|
||||
f 324//33 323//33 388//33 386//33
|
||||
f 387//35 389//35 326//35 325//35
|
||||
f 293//7 334//7 404//7 401//7
|
||||
f 389//43 373//43 376//43 326//43
|
||||
f 312//45 317//45 357//45 390//45
|
||||
f 357//46 330//46 391//46 390//46
|
||||
f 314//31 313//31 316//31 315//31
|
||||
f 315//31 321//31 322//31 314//31
|
||||
f 360//31 316//31 330//31 356//31
|
||||
f 358//45 357//45 317//45 363//45
|
||||
f 363//44 317//44 316//44 360//44
|
||||
f 367//30 321//30 320//30 364//30
|
||||
f 364//32 320//32 372//32 371//32
|
||||
f 368//40 333//40 321//40 367//40
|
||||
f 331//44 316//44 313//44 392//44
|
||||
f 337//46 322//46 321//46 332//46
|
||||
f 388//7 370//7 412//7 421//7
|
||||
f 339//32 372//32 320//32 319//32
|
||||
f 393//37 359//37 362//37 309//37
|
||||
f 393//41 342//41 345//41 359//41
|
||||
f 356//40 345//40 361//40 360//40
|
||||
f 363//37 362//37 359//37 358//37
|
||||
f 371//32 370//32 365//32 364//32
|
||||
f 367//40 366//40 369//40 368//40
|
||||
f 374//7 294//7 402//7 416//7
|
||||
f 323//32 365//32 370//32 388//32
|
||||
f 346//44 297//44 296//44 353//44
|
||||
f 353//40 296//40 354//40 350//40
|
||||
f 349//32 355//32 297//32 346//32
|
||||
f 302//40 301//40 296//40 295//40
|
||||
f 298//37 297//37 300//37 299//37
|
||||
f 394//41 391//41 330//41 329//41
|
||||
f 392//38 313//38 391//38 394//38
|
||||
f 394//38 395//38 300//38 392//38
|
||||
f 329//41 355//41 395//41 394//41
|
||||
f 331//33 297//33 355//33 329//33
|
||||
f 392//44 300//44 297//44 331//44
|
||||
f 313//34 312//34 390//34 391//34
|
||||
f 395//38 396//38 301//38 300//38
|
||||
f 396//41 395//41 355//41 354//41
|
||||
f 396//40 354//40 296//40 301//40
|
||||
f 343//33 305//33 397//33 341//33
|
||||
f 341//41 397//41 348//41 344//41
|
||||
f 344//38 348//38 347//38 381//38
|
||||
f 381//47 347//47 305//47 343//47
|
||||
f 342//33 393//33 309//33 308//33
|
||||
f 305//33 304//33 398//33 397//33
|
||||
f 351//41 348//41 397//41 398//41
|
||||
f 304//40 352//40 351//40 398//40
|
||||
f 404//44 403//44 405//44 406//44
|
||||
f 406//44 407//44 401//44 404//44
|
||||
f 400//44 401//44 407//44 409//44
|
||||
f 410//44 411//44 412//44 413//44
|
||||
f 413//44 414//44 403//44 410//44
|
||||
f 402//44 401//44 400//44 399//44
|
||||
f 399//44 415//44 416//44 402//44
|
||||
f 418//44 419//44 411//44 417//44
|
||||
f 417//44 416//44 420//44 418//44
|
||||
f 422//47 420//47 416//47 415//47
|
||||
f 408//44 405//44 403//44 414//44
|
||||
f 412//44 411//44 419//44 421//44
|
||||
f 368//7 369//7 411//7 410//7
|
||||
f 335//7 336//7 406//7 405//7
|
||||
f 370//7 371//7 413//7 412//7
|
||||
f 336//7 338//7 407//7 406//7
|
||||
f 338//7 340//7 409//7 407//7
|
||||
f 339//7 335//7 405//7 408//7
|
||||
f 294//7 293//7 401//7 402//7
|
||||
f 371//7 372//7 414//7 413//7
|
||||
f 369//7 384//7 417//7 411//7
|
||||
f 333//7 368//7 410//7 403//7
|
||||
f 387//7 385//7 418//7 420//7
|
||||
f 384//7 374//7 416//7 417//7
|
||||
f 394//7 392//7 425//7 426//7
|
||||
f 331//7 329//7 423//7 424//7
|
||||
f 392//7 331//7 424//7 425//7
|
||||
f 329//7 394//7 426//7 423//7
|
||||
f 316//7 331//7 429//7 428//7
|
||||
f 331//7 297//7 427//7 429//7
|
22
examples/15-shadowmaps-simple/makefile
Normal file
22
examples/15-shadowmaps-simple/makefile
Normal file
|
@ -0,0 +1,22 @@
|
|||
#
|
||||
# Copyright 2013-2014 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
|
BIN
examples/15-shadowmaps-simple/screenshot.png
Normal file
BIN
examples/15-shadowmaps-simple/screenshot.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 26 KiB |
670
examples/15-shadowmaps-simple/shadowmaps_simple.cpp
Normal file
670
examples/15-shadowmaps-simple/shadowmaps_simple.cpp
Normal file
|
@ -0,0 +1,670 @@
|
|||
/*
|
||||
* Copyright 2013-2014 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;
|
||||
}
|
7
examples/15-shadowmaps-simple/varying.def.sc
Normal file
7
examples/15-shadowmaps-simple/varying.def.sc
Normal file
|
@ -0,0 +1,7 @@
|
|||
vec3 v_view : TEXCOORD0 = vec3(0.0, 0.0, 0.0);
|
||||
vec4 v_shadowcoord : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_position : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0);
|
||||
|
||||
vec3 a_position : POSITION;
|
||||
vec4 a_normal : NORMAL;
|
24
examples/15-shadowmaps-simple/vs_smsimple_draw.sc
Normal file
24
examples/15-shadowmaps-simple/vs_smsimple_draw.sc
Normal file
|
@ -0,0 +1,24 @@
|
|||
$input a_position, a_normal
|
||||
$output v_view, v_normal, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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) );
|
||||
}
|
15
examples/15-shadowmaps-simple/vs_smsimple_packdepth.sc
Normal file
15
examples/15-shadowmaps-simple/vs_smsimple_packdepth.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input a_position
|
||||
$output v_position
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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;
|
||||
}
|
235
examples/16-shadowmaps/common.sh
Normal file
235
examples/16-shadowmaps/common.sh
Normal file
|
@ -0,0 +1,235 @@
|
|||
/*
|
||||
* Copyright 2013-2014 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));
|
||||
}
|
11
examples/16-shadowmaps/fs_shadowmaps_color_black.sc
Normal file
11
examples/16-shadowmaps/fs_shadowmaps_color_black.sc
Normal file
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
84
examples/16-shadowmaps/fs_shadowmaps_color_lightning.sh
Normal file
84
examples/16-shadowmaps/fs_shadowmaps_color_lightning.sh
Normal file
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright 2013-2014 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;
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_esm.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_esm.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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-2014 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-2014 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-2014 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-2014 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-2014 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"
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_hard.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_hard.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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-2014 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-2014 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-2014 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-2014 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-2014 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"
|
||||
}
|
151
examples/16-shadowmaps/fs_shadowmaps_color_lightning_main.sh
Normal file
151
examples/16-shadowmaps/fs_shadowmaps_color_lightning_main.sh
Normal file
|
@ -0,0 +1,151 @@
|
|||
#define u_ambientPass u_params0.x
|
||||
#define u_lightningPass u_params0.y
|
||||
|
||||
#define u_shadowMapBias u_params1.x
|
||||
#define u_shadowMapParam0 u_params1.z
|
||||
#define u_shadowMapParam1 u_params1.w
|
||||
|
||||
#define u_shadowMapShowCoverage u_params2.y
|
||||
#define u_shadowMapTexelSize u_params2.z
|
||||
|
||||
#define u_spotDirection u_lightSpotDirectionInner.xyz
|
||||
#define u_spotInner u_lightSpotDirectionInner.w
|
||||
#define u_lightAttnParams u_lightAttenuationSpotOuter.xyz
|
||||
#define u_spotOuter u_lightAttenuationSpotOuter.w
|
||||
|
||||
// Pcf
|
||||
#define u_shadowMapPcfMode u_shadowMapParam0
|
||||
#define u_shadowMapNoiseAmount u_shadowMapParam1
|
||||
|
||||
// Vsm
|
||||
#define u_shadowMapMinVariance u_shadowMapParam0
|
||||
#define u_shadowMapDepthMultiplier u_shadowMapParam1
|
||||
|
||||
// Esm
|
||||
#define u_shadowMapHardness u_shadowMapParam0
|
||||
#define u_shadowMapDepthMultiplier u_shadowMapParam1
|
||||
|
||||
{
|
||||
vec3 colorCoverage;
|
||||
float visibility;
|
||||
|
||||
#if SM_CSM
|
||||
vec2 texelSize = vec2_splat(u_shadowMapTexelSize);
|
||||
|
||||
vec2 texcoord1 = v_texcoord1.xy/v_texcoord1.w;
|
||||
vec2 texcoord2 = v_texcoord2.xy/v_texcoord2.w;
|
||||
vec2 texcoord3 = v_texcoord3.xy/v_texcoord3.w;
|
||||
vec2 texcoord4 = v_texcoord4.xy/v_texcoord4.w;
|
||||
|
||||
bool selection0 = all(lessThan(texcoord1, vec2_splat(0.99))) && all(greaterThan(texcoord1, vec2_splat(0.01)));
|
||||
bool selection1 = all(lessThan(texcoord2, vec2_splat(0.99))) && all(greaterThan(texcoord2, vec2_splat(0.01)));
|
||||
bool selection2 = all(lessThan(texcoord3, vec2_splat(0.99))) && all(greaterThan(texcoord3, vec2_splat(0.01)));
|
||||
bool selection3 = all(lessThan(texcoord4, vec2_splat(0.99))) && all(greaterThan(texcoord4, vec2_splat(0.01)));
|
||||
|
||||
if (selection0)
|
||||
{
|
||||
vec4 shadowcoord = v_texcoord1;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
|
||||
colorCoverage = vec3(-coverage, coverage, -coverage);
|
||||
visibility = computeVisibility(u_shadowMap0, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
}
|
||||
else if (selection1)
|
||||
{
|
||||
vec4 shadowcoord = v_texcoord2;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
|
||||
colorCoverage = vec3(coverage, coverage, -coverage);
|
||||
visibility = computeVisibility(u_shadowMap1, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/2.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
}
|
||||
else if (selection2)
|
||||
{
|
||||
vec4 shadowcoord = v_texcoord3;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
|
||||
colorCoverage = vec3(-coverage, -coverage, coverage);
|
||||
visibility = computeVisibility(u_shadowMap2, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/3.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
}
|
||||
else //selection3
|
||||
{
|
||||
vec4 shadowcoord = v_texcoord4;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.4;
|
||||
colorCoverage = vec3(coverage, -coverage, -coverage);
|
||||
visibility = computeVisibility(u_shadowMap3, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize/4.0, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
}
|
||||
#elif SM_OMNI
|
||||
vec2 texelSize = vec2_splat(u_shadowMapTexelSize/4.0);
|
||||
|
||||
vec4 faceSelection;
|
||||
vec3 pos = v_position.xyz;
|
||||
faceSelection.x = dot(u_tetraNormalGreen, pos);
|
||||
faceSelection.y = dot(u_tetraNormalYellow, pos);
|
||||
faceSelection.z = dot(u_tetraNormalBlue, pos);
|
||||
faceSelection.w = dot(u_tetraNormalRed, pos);
|
||||
|
||||
vec4 shadowcoord;
|
||||
float faceMax = max(max(faceSelection.x, faceSelection.y), max(faceSelection.z, faceSelection.w));
|
||||
if (faceSelection.x == faceMax)
|
||||
{
|
||||
shadowcoord = v_texcoord1;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
|
||||
colorCoverage = vec3(-coverage, coverage, -coverage);
|
||||
}
|
||||
else if (faceSelection.y == faceMax)
|
||||
{
|
||||
shadowcoord = v_texcoord2;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
|
||||
colorCoverage = vec3(coverage, coverage, -coverage);
|
||||
}
|
||||
else if (faceSelection.z == faceMax)
|
||||
{
|
||||
shadowcoord = v_texcoord3;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
|
||||
colorCoverage = vec3(-coverage, -coverage, coverage);
|
||||
}
|
||||
else // (faceSelection.w == faceMax)
|
||||
{
|
||||
shadowcoord = v_texcoord4;
|
||||
|
||||
float coverage = texcoordInRange(shadowcoord.xy/shadowcoord.w) * 0.3;
|
||||
colorCoverage = vec3(coverage, -coverage, -coverage);
|
||||
}
|
||||
|
||||
visibility = computeVisibility(u_shadowMap0, shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
#else
|
||||
vec2 texelSize = vec2_splat(u_shadowMapTexelSize);
|
||||
|
||||
float coverage = texcoordInRange(v_shadowcoord.xy/v_shadowcoord.w) * 0.3;
|
||||
colorCoverage = vec3(coverage, -coverage, -coverage);
|
||||
|
||||
visibility = computeVisibility(u_shadowMap0, v_shadowcoord, u_shadowMapBias, u_smSamplingParams, texelSize, u_shadowMapDepthMultiplier, u_shadowMapMinVariance, u_shadowMapHardness);
|
||||
#endif
|
||||
|
||||
vec3 v = v_view;
|
||||
vec3 vd = -normalize(v_view);
|
||||
vec3 n = v_normal;
|
||||
Light light = evalLight(v, u_lightPosition, u_spotDirection, u_spotInner, u_spotOuter, u_lightAttnParams);
|
||||
|
||||
vec2 lc = lit(light.ld, n, vd, u_materialKs.w) * light.attn;
|
||||
Shader shader = evalShader(lc.x, lc.y);
|
||||
|
||||
//Fog.
|
||||
const vec3 fogColor = vec3_splat(0.0);
|
||||
const float fogDensity = 0.0035;
|
||||
const float LOG2 = 1.442695;
|
||||
float z = length(v);
|
||||
float fogFactor = clamp(1.0/exp2(fogDensity*fogDensity*z*z*LOG2), 0.0, 1.0);
|
||||
|
||||
vec3 color = u_color.xyz;
|
||||
|
||||
vec3 ambient = shader.ambi * color;
|
||||
vec3 brdf = (shader.diff + shader.spec) * color * visibility;
|
||||
|
||||
vec3 final = toGamma(abs(ambient + brdf)) + (colorCoverage * u_shadowMapShowCoverage);
|
||||
gl_FragColor.xyz = mix(fogColor, final, fogFactor);
|
||||
gl_FragColor.w = 1.0;
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_pcf.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_pcf.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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-2014 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-2014 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-2014 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-2014 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-2014 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"
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_vsm.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_color_lightning_vsm.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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-2014 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-2014 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-2014 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-2014 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-2014 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"
|
||||
}
|
22
examples/16-shadowmaps/fs_shadowmaps_color_texture.sc
Normal file
22
examples/16-shadowmaps/fs_shadowmaps_color_texture.sc
Normal file
|
@ -0,0 +1,22 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
14
examples/16-shadowmaps/fs_shadowmaps_hblur.sc
Normal file
14
examples/16-shadowmaps/fs_shadowmaps_hblur.sc
Normal file
|
@ -0,0 +1,14 @@
|
|||
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_hblur_vsm.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
||||
|
14
examples/16-shadowmaps/fs_shadowmaps_packdepth.sc
Normal file
14
examples/16-shadowmaps/fs_shadowmaps_packdepth.sc
Normal file
|
@ -0,0 +1,14 @@
|
|||
$input v_position
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
13
examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc
Normal file
13
examples/16-shadowmaps/fs_shadowmaps_packdepth_linear.sc
Normal file
|
@ -0,0 +1,13 @@
|
|||
$input v_depth
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
20
examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc
Normal file
20
examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm.sc
Normal file
|
@ -0,0 +1,20 @@
|
|||
$input v_position
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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));
|
||||
}
|
20
examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc
Normal file
20
examples/16-shadowmaps/fs_shadowmaps_packdepth_vsm_linear.sc
Normal file
|
@ -0,0 +1,20 @@
|
|||
$input v_depth
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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));
|
||||
}
|
14
examples/16-shadowmaps/fs_shadowmaps_texture.sc
Normal file
14
examples/16-shadowmaps/fs_shadowmaps_texture.sc
Normal file
|
@ -0,0 +1,14 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
19
examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc
Normal file
19
examples/16-shadowmaps/fs_shadowmaps_unpackdepth.sc
Normal file
|
@ -0,0 +1,19 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
20
examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc
Normal file
20
examples/16-shadowmaps/fs_shadowmaps_unpackdepth_vsm.sc
Normal file
|
@ -0,0 +1,20 @@
|
|||
$input v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
14
examples/16-shadowmaps/fs_shadowmaps_vblur.sc
Normal file
14
examples/16-shadowmaps/fs_shadowmaps_vblur.sc
Normal file
|
@ -0,0 +1,14 @@
|
|||
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
15
examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc
Normal file
15
examples/16-shadowmaps/fs_shadowmaps_vblur_vsm.sc
Normal file
|
@ -0,0 +1,15 @@
|
|||
$input v_texcoord0, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
||||
|
934
examples/16-shadowmaps/hollowcube.obj
Normal file
934
examples/16-shadowmaps/hollowcube.obj
Normal file
|
@ -0,0 +1,934 @@
|
|||
# Blender v2.66 (sub 1) OBJ File: ''
|
||||
# www.blender.org
|
||||
g holeycube
|
||||
v 1.500000 1.211657 0.000000
|
||||
v 1.500000 1.211656 1.209338
|
||||
v 1.236416 1.211656 1.209338
|
||||
v 1.236416 1.211657 0.000000
|
||||
v 1.500000 1.500000 0.000000
|
||||
v 1.500000 1.500000 1.209338
|
||||
v 1.236416 1.500000 1.209338
|
||||
v 1.236416 1.500000 0.000000
|
||||
v 1.500000 -0.000000 1.209337
|
||||
v 1.500000 -1.211657 1.209337
|
||||
v 1.236416 -1.211657 1.209337
|
||||
v 1.236416 -0.000000 1.209337
|
||||
v 1.236416 -0.000000 1.500000
|
||||
v 1.236416 -1.211657 1.500000
|
||||
v 1.500000 -1.211657 1.500000
|
||||
v 1.500000 -0.000000 1.500000
|
||||
v 1.500000 0.000000 -1.500000
|
||||
v 1.500000 -1.211656 -1.500000
|
||||
v 1.236416 -1.211656 -1.500000
|
||||
v 1.236416 0.000000 -1.500000
|
||||
v -1.236416 0.000000 -1.500000
|
||||
v -1.236416 -1.211656 -1.500000
|
||||
v -1.500000 -1.211656 -1.500000
|
||||
v -1.500000 0.000000 -1.500000
|
||||
v -1.500000 -0.000000 1.500000
|
||||
v -1.500000 -1.211657 1.500000
|
||||
v -1.236416 -1.211657 1.500000
|
||||
v -1.236416 -0.000000 1.500000
|
||||
v -1.236416 -0.000000 1.209337
|
||||
v -1.236416 -1.211657 1.209337
|
||||
v -1.500000 -1.211657 1.209337
|
||||
v -1.500000 -0.000000 1.209337
|
||||
v -1.500000 1.211656 1.500000
|
||||
v -1.500000 1.211656 1.209338
|
||||
v -1.236416 1.211656 1.209338
|
||||
v -1.236416 1.211656 1.500000
|
||||
v -1.500000 1.211657 -1.500000
|
||||
v -1.236416 1.211657 -1.500000
|
||||
v 1.236416 1.211657 -1.500000
|
||||
v 1.500000 1.211657 -1.500000
|
||||
v 1.500000 1.211656 1.500000
|
||||
v 1.236416 1.211656 1.500000
|
||||
v 0.000000 -1.500000 1.209337
|
||||
v -1.236416 -1.500000 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
v 0.000000 1.211656 1.209338
|
||||
v -1.236416 1.500000 1.209338
|
||||
v 0.000000 1.500000 1.209338
|
||||
v -1.236416 1.500000 1.500000
|
||||
v 0.000000 1.500000 1.500000
|
||||
v 0.000000 1.211656 1.500000
|
||||
v 1.236416 1.500000 1.500000
|
||||
v -1.500000 1.500000 1.500000
|
||||
v 1.500000 1.500000 1.500000
|
||||
v 0.000000 -1.500000 -1.500000
|
||||
v -1.236416 -1.500000 -1.500000
|
||||
v 0.000000 -1.211656 -1.500000
|
||||
v 0.000000 -1.500000 -1.209338
|
||||
v -1.236416 -1.500000 -1.209338
|
||||
v 1.236416 -1.211657 -0.000000
|
||||
v 1.236416 -1.211656 -1.209338
|
||||
v 1.236416 -1.500000 -1.209338
|
||||
v 1.236416 -1.500000 -0.000000
|
||||
v 1.500000 -1.500000 -0.000000
|
||||
v 1.500000 -1.500000 -1.209338
|
||||
v 1.500000 -1.211656 -1.209338
|
||||
v 1.500000 -1.211657 -0.000000
|
||||
v 1.500000 -1.500000 1.209337
|
||||
v 1.236416 -1.500000 1.209337
|
||||
v -1.236416 -1.500000 -0.000000
|
||||
v -1.500000 -1.500000 1.209337
|
||||
v -1.500000 -1.500000 -0.000000
|
||||
v -1.500000 -1.500000 -1.209338
|
||||
v -1.236416 -1.211657 -0.000000
|
||||
v -1.236416 -1.211656 -1.209338
|
||||
v -1.500000 -1.211656 -1.209338
|
||||
v -1.500000 -1.211657 -0.000000
|
||||
v -1.500000 1.211657 0.000000
|
||||
v -1.500000 1.211657 -1.209337
|
||||
v -1.236416 1.211657 -1.209337
|
||||
v -1.236416 1.211657 0.000000
|
||||
v -1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 -1.209337
|
||||
v -1.500000 1.500000 -1.209337
|
||||
v -1.500000 1.500000 0.000000
|
||||
v -1.500000 1.500000 1.209338
|
||||
v 1.500000 1.500000 -1.209337
|
||||
v 1.236416 1.500000 -1.209337
|
||||
v 1.236416 1.211657 -1.209337
|
||||
v 1.500000 1.211657 -1.209337
|
||||
v 1.236416 0.000000 -1.209337
|
||||
v 1.500000 0.000000 -1.209337
|
||||
v -1.500000 0.000000 -1.209337
|
||||
v -1.236416 0.000000 -1.209337
|
||||
v 0.000000 -1.211656 -1.209338
|
||||
v 0.000000 1.211657 -1.209337
|
||||
v 0.000000 1.211657 -1.500000
|
||||
v 0.000000 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.500000
|
||||
v -1.236416 1.500000 -1.500000
|
||||
v 1.236416 1.500000 -1.500000
|
||||
v -1.500000 1.500000 -1.500000
|
||||
v 1.500000 1.500000 -1.500000
|
||||
v -1.500000 -1.500000 1.500000
|
||||
v -1.236416 -1.500000 1.500000
|
||||
v 0.000000 -1.211657 1.500000
|
||||
v -1.500000 -1.500000 -1.500000
|
||||
v 0.000000 -1.500000 1.500000
|
||||
v 1.236416 -1.500000 1.500000
|
||||
v 1.500000 -1.500000 1.500000
|
||||
v 1.236416 -1.500000 -1.500000
|
||||
v 1.500000 -1.500000 -1.500000
|
||||
v 1.500000 1.500000 0.000000
|
||||
v 1.500000 1.500000 1.209338
|
||||
v 1.236416 1.500000 1.209338
|
||||
v 1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 1.209338
|
||||
v 0.000000 1.500000 1.209338
|
||||
v -1.236416 1.500000 1.500000
|
||||
v 0.000000 1.500000 1.500000
|
||||
v 1.236416 1.500000 1.500000
|
||||
v -1.500000 1.500000 1.500000
|
||||
v 1.500000 1.500000 1.500000
|
||||
v -1.236416 1.500000 0.000000
|
||||
v -1.236416 1.500000 -1.209337
|
||||
v -1.500000 1.500000 -1.209337
|
||||
v -1.500000 1.500000 0.000000
|
||||
v -1.500000 1.500000 1.209338
|
||||
v 1.500000 1.500000 -1.209337
|
||||
v 1.236416 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.209337
|
||||
v 0.000000 1.500000 -1.500000
|
||||
v -1.236416 1.500000 -1.500000
|
||||
v 1.236416 1.500000 -1.500000
|
||||
v -1.500000 1.500000 -1.500000
|
||||
v 1.500000 1.500000 -1.500000
|
||||
v 0.000000 -1.500000 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
v 0.000000 -1.211657 1.500000
|
||||
v 0.000000 -1.500000 1.500000
|
||||
v 1.236416 -1.211657 1.209337
|
||||
v -1.236416 -1.211657 1.209337
|
||||
v 0.000000 -1.211657 1.209337
|
||||
vn 0.000000 -1.000000 -0.000001
|
||||
vn 1.000000 0.000000 0.000000
|
||||
vn -1.000000 -0.000000 0.000000
|
||||
vn 0.000000 0.000000 -1.000000
|
||||
vn 0.000000 -0.000000 1.000000
|
||||
vn 0.000000 0.000001 -1.000000
|
||||
vn 0.000000 0.000000 0.000000
|
||||
vn 0.000000 -1.000000 -0.000000
|
||||
vn 0.000000 1.000000 0.000001
|
||||
vn 0.000000 -0.000001 1.000000
|
||||
vn 0.000000 1.000000 0.000000
|
||||
s off
|
||||
f 1//1 2//1 3//1 4//1
|
||||
f 2//2 1//2 5//2 6//2
|
||||
f 4//3 3//3 7//3 8//3
|
||||
f 9//4 10//4 11//4 12//4
|
||||
f 13//5 14//5 15//5 16//5
|
||||
f 17//4 18//4 19//4 20//4
|
||||
f 21//4 22//4 23//4 24//4
|
||||
f 25//5 26//5 27//5 28//5
|
||||
f 29//4 30//4 31//4 32//4
|
||||
f 32//3 31//3 26//3 25//3
|
||||
f 25//3 33//3 34//3 32//3
|
||||
f 32//6 34//6 35//6 29//6
|
||||
f 28//5 36//5 33//5 25//5
|
||||
f 24//4 37//4 38//4 21//4
|
||||
f 20//4 39//4 40//4 17//4
|
||||
f 16//5 41//5 42//5 13//5
|
||||
f 12//6 3//6 2//6 9//6
|
||||
f 9//2 2//2 41//2 16//2
|
||||
f 13//3 42//3 3//3 12//3
|
||||
f 43//4 44//4 30//4 45//4
|
||||
f 46//4 35//4 47//4 48//4
|
||||
f 99//7 100//7 133//7 132//7
|
||||
f 50//5 49//5 36//5 51//5
|
||||
f 51//5 42//5 52//5 50//5
|
||||
f 100//7 102//7 135//7 133//7
|
||||
f 48//4 7//4 3//4 46//4
|
||||
f 46//8 3//8 42//8 51//8
|
||||
f 49//5 53//5 33//5 36//5
|
||||
f 42//5 41//5 54//5 52//5
|
||||
f 86//7 53//7 122//7 128//7
|
||||
f 41//2 2//2 6//2 54//2
|
||||
f 55//4 56//4 22//4 57//4
|
||||
f 58//8 59//8 56//8 55//8
|
||||
f 60//3 61//3 62//3 63//3
|
||||
f 64//2 65//2 66//2 67//2
|
||||
f 67//9 66//9 61//9 60//9
|
||||
f 63//8 62//8 65//8 64//8
|
||||
f 64//8 68//8 69//8 63//8
|
||||
f 70//8 44//8 71//8 72//8
|
||||
f 72//8 73//8 59//8 70//8
|
||||
f 74//9 75//9 76//9 77//9
|
||||
f 78//8 79//8 80//8 81//8
|
||||
f 5//7 87//7 129//7 113//7
|
||||
f 54//7 6//7 114//7 123//7
|
||||
f 48//7 47//7 117//7 118//7
|
||||
f 87//7 103//7 136//7 129//7
|
||||
f 90//8 1//8 4//8 89//8
|
||||
f 1//2 90//2 87//2 5//2
|
||||
f 8//3 88//3 89//3 4//3
|
||||
f 20//3 19//3 61//3 91//3
|
||||
f 92//2 66//2 18//2 17//2
|
||||
f 91//10 61//10 66//10 92//10
|
||||
f 93//10 76//10 75//10 94//10
|
||||
f 24//3 23//3 76//3 93//3
|
||||
f 94//2 75//2 22//2 21//2
|
||||
f 21//2 38//2 80//2 94//2
|
||||
f 57//11 22//11 75//11 95//11
|
||||
f 96//8 80//8 38//8 97//8
|
||||
f 93//3 79//3 37//3 24//3
|
||||
f 94//5 80//5 79//5 93//5
|
||||
f 92//5 90//5 89//5 91//5
|
||||
f 17//2 40//2 90//2 92//2
|
||||
f 91//3 89//3 39//3 20//3
|
||||
f 95//5 75//5 59//5 58//5
|
||||
f 98//5 83//5 80//5 96//5
|
||||
f 103//7 101//7 134//7 136//7
|
||||
f 97//4 38//4 100//4 99//4
|
||||
f 99//4 101//4 39//4 97//4
|
||||
f 6//7 5//7 113//7 114//7
|
||||
f 96//5 89//5 88//5 98//5
|
||||
f 97//8 39//8 89//8 96//8
|
||||
f 38//4 37//4 102//4 100//4
|
||||
f 101//4 103//4 40//4 39//4
|
||||
f 7//7 48//7 118//7 115//7
|
||||
f 103//2 87//2 90//2 40//2
|
||||
f 26//3 31//3 71//3 104//3
|
||||
f 71//8 44//8 105//8 104//8
|
||||
f 28//2 27//2 30//2 29//2
|
||||
f 29//2 35//2 36//2 28//2
|
||||
f 74//2 30//2 44//2 70//2
|
||||
f 72//3 71//3 31//3 77//3
|
||||
f 77//11 31//11 30//11 74//11
|
||||
f 81//1 35//1 34//1 78//1
|
||||
f 78//3 34//3 86//3 85//3
|
||||
f 82//2 47//2 35//2 81//2
|
||||
f 45//11 30//11 27//11 106//11
|
||||
f 51//8 36//8 35//8 46//8
|
||||
f 102//7 84//7 126//7 135//7
|
||||
f 53//3 86//3 34//3 33//3
|
||||
f 107//3 73//3 76//3 23//3
|
||||
f 107//8 56//8 59//8 73//8
|
||||
f 70//2 59//2 75//2 74//2
|
||||
f 77//3 76//3 73//3 72//3
|
||||
f 85//3 84//3 79//3 78//3
|
||||
f 81//2 80//2 83//2 82//2
|
||||
f 88//7 8//7 116//7 130//7
|
||||
f 37//3 79//3 84//3 102//3
|
||||
f 60//11 11//11 10//11 67//11
|
||||
f 67//2 10//2 68//2 64//2
|
||||
f 63//3 69//3 11//3 60//3
|
||||
f 16//2 15//2 10//2 9//2
|
||||
f 12//3 11//3 14//3 13//3
|
||||
f 108//8 105//8 44//8 43//8
|
||||
f 106//5 27//5 105//5 108//5
|
||||
f 108//5 109//5 14//5 106//5
|
||||
f 43//8 69//8 109//8 108//8
|
||||
f 45//4 11//4 69//4 43//4
|
||||
f 106//11 14//11 11//11 45//11
|
||||
f 27//5 26//5 104//5 105//5
|
||||
f 109//5 110//5 15//5 14//5
|
||||
f 110//8 109//8 69//8 68//8
|
||||
f 110//2 68//2 10//2 15//2
|
||||
f 57//4 19//4 111//4 55//4
|
||||
f 55//8 111//8 62//8 58//8
|
||||
f 58//5 62//5 61//5 95//5
|
||||
f 95//11 61//11 19//11 57//11
|
||||
f 56//4 107//4 23//4 22//4
|
||||
f 19//4 18//4 112//4 111//4
|
||||
f 65//8 62//8 111//8 112//8
|
||||
f 18//2 66//2 65//2 112//2
|
||||
f 118//11 117//11 119//11 120//11
|
||||
f 120//11 121//11 115//11 118//11
|
||||
f 114//11 115//11 121//11 123//11
|
||||
f 124//11 125//11 126//11 127//11
|
||||
f 127//11 128//11 117//11 124//11
|
||||
f 116//11 115//11 114//11 113//11
|
||||
f 113//11 129//11 130//11 116//11
|
||||
f 132//11 133//11 125//11 131//11
|
||||
f 131//11 130//11 134//11 132//11
|
||||
f 136//11 134//11 130//11 129//11
|
||||
f 122//11 119//11 117//11 128//11
|
||||
f 126//11 125//11 133//11 135//11
|
||||
f 82//7 83//7 125//7 124//7
|
||||
f 49//7 50//7 120//7 119//7
|
||||
f 84//7 85//7 127//7 126//7
|
||||
f 50//7 52//7 121//7 120//7
|
||||
f 52//7 54//7 123//7 121//7
|
||||
f 53//7 49//7 119//7 122//7
|
||||
f 8//7 7//7 115//7 116//7
|
||||
f 85//7 86//7 128//7 127//7
|
||||
f 83//7 98//7 131//7 125//7
|
||||
f 47//7 82//7 124//7 117//7
|
||||
f 101//7 99//7 132//7 134//7
|
||||
f 98//7 88//7 130//7 131//7
|
||||
f 108//7 106//7 139//7 140//7
|
||||
f 45//7 43//7 137//7 138//7
|
||||
f 106//7 45//7 138//7 139//7
|
||||
f 43//7 108//7 140//7 137//7
|
||||
f 30//7 45//7 143//7 142//7
|
||||
f 45//7 11//7 141//7 143//7
|
||||
g holeycube.001
|
||||
v 0.037848 0.053616 0.680965
|
||||
v 0.414385 -0.152030 0.676229
|
||||
v 0.382376 -0.209100 0.609416
|
||||
v 0.005839 -0.003453 0.614153
|
||||
v 0.003506 -0.010911 0.752536
|
||||
v 0.380043 -0.216558 0.747800
|
||||
v 0.348034 -0.273628 0.680987
|
||||
v -0.028503 -0.067981 0.685724
|
||||
v 0.558694 0.119124 0.375479
|
||||
v 0.703003 0.390278 0.074730
|
||||
v 0.670994 0.333208 0.007917
|
||||
v 0.526685 0.062054 0.308667
|
||||
v 0.617185 0.012627 0.307529
|
||||
v 0.761494 0.283781 0.006779
|
||||
v 0.793503 0.340851 0.073591
|
||||
v 0.649194 0.069697 0.374341
|
||||
v -0.284880 0.579845 0.386090
|
||||
v -0.140571 0.850998 0.085340
|
||||
v -0.172580 0.793929 0.018528
|
||||
v -0.316889 0.522775 0.319277
|
||||
v -0.617185 -0.012627 -0.307529
|
||||
v -0.472876 0.258527 -0.608278
|
||||
v -0.504885 0.201457 -0.675091
|
||||
v -0.649194 -0.069697 -0.374341
|
||||
v 0.284880 -0.579845 -0.386090
|
||||
v 0.429189 -0.308690 -0.686840
|
||||
v 0.461198 -0.251621 -0.620027
|
||||
v 0.316889 -0.522775 -0.319277
|
||||
v 0.226389 -0.473348 -0.318139
|
||||
v 0.370698 -0.202194 -0.618889
|
||||
v 0.338689 -0.259263 -0.685701
|
||||
v 0.194380 -0.530418 -0.384952
|
||||
v 0.140571 -0.850998 -0.085340
|
||||
v 0.050071 -0.801571 -0.084202
|
||||
v 0.082080 -0.744502 -0.017389
|
||||
v 0.172580 -0.793929 -0.018528
|
||||
v -0.793503 -0.340851 -0.073591
|
||||
v -0.761494 -0.283781 -0.006779
|
||||
v -0.461198 0.251621 0.620027
|
||||
v -0.429189 0.308690 0.686840
|
||||
v 0.504885 -0.201457 0.675091
|
||||
v 0.472876 -0.258527 0.608278
|
||||
v 0.555187 0.130035 -0.377057
|
||||
v 0.405040 -0.137666 -0.690460
|
||||
v 0.520846 0.065507 -0.305486
|
||||
v 0.232228 -0.476801 0.296014
|
||||
v 0.047738 -0.809030 0.054181
|
||||
v 0.197886 -0.541329 0.367584
|
||||
v 0.138238 -0.858457 0.053043
|
||||
v 0.288386 -0.590756 0.366446
|
||||
v 0.322728 -0.526228 0.294875
|
||||
v 0.438534 -0.323055 0.679849
|
||||
v 0.106229 -0.915526 -0.013769
|
||||
v 0.470543 -0.265985 0.746662
|
||||
v -0.288386 0.590756 -0.366446
|
||||
v -0.438534 0.323055 -0.679849
|
||||
v -0.322728 0.526228 -0.294875
|
||||
v -0.197886 0.541329 -0.367584
|
||||
v -0.348034 0.273628 -0.680987
|
||||
v 0.294457 0.538855 0.012653
|
||||
v -0.082080 0.744502 0.017389
|
||||
v -0.047738 0.809030 -0.054181
|
||||
v 0.328799 0.603383 -0.058918
|
||||
v 0.360808 0.660452 0.007895
|
||||
v -0.015729 0.866099 0.012631
|
||||
v -0.050071 0.801571 0.084202
|
||||
v 0.326466 0.595925 0.079466
|
||||
v 0.737345 0.454805 0.003159
|
||||
v 0.705335 0.397736 -0.063654
|
||||
v 0.028503 0.067981 -0.685724
|
||||
v 0.373030 -0.194736 -0.757272
|
||||
v -0.003506 0.010911 -0.752536
|
||||
v -0.380043 0.216558 -0.747800
|
||||
v -0.005839 0.003453 -0.614153
|
||||
v -0.382376 0.209100 -0.609416
|
||||
v -0.414385 0.152030 -0.676229
|
||||
v -0.037848 -0.053616 -0.680965
|
||||
v -0.326466 -0.595925 -0.079466
|
||||
v -0.703003 -0.390278 -0.074730
|
||||
v -0.670994 -0.333208 -0.007917
|
||||
v -0.294457 -0.538855 -0.012653
|
||||
v -0.328799 -0.603383 0.058918
|
||||
v -0.705335 -0.397736 0.063654
|
||||
v -0.737345 -0.454805 -0.003159
|
||||
v -0.360808 -0.660452 -0.007895
|
||||
v 0.015729 -0.866099 -0.012631
|
||||
v -0.373030 0.194736 0.757272
|
||||
v -0.405040 0.137666 0.690460
|
||||
v -0.370698 0.202194 0.618889
|
||||
v -0.338689 0.259263 0.685701
|
||||
v -0.226389 0.473348 0.318139
|
||||
v -0.194380 0.530418 0.384952
|
||||
v -0.558694 -0.119124 -0.375479
|
||||
v -0.526685 -0.062054 -0.308667
|
||||
v -0.232228 0.476801 -0.296014
|
||||
v -0.520846 -0.065507 0.305486
|
||||
v -0.611346 -0.016080 0.306624
|
||||
v -0.555187 -0.130035 0.377057
|
||||
v -0.645688 -0.080608 0.378195
|
||||
v -0.795836 -0.348309 0.064792
|
||||
v -0.495540 0.187093 0.691598
|
||||
v -0.827845 -0.405378 -0.002021
|
||||
v -0.463531 0.244163 0.758410
|
||||
v 0.463531 -0.244163 -0.758410
|
||||
v 0.495540 -0.187093 -0.691598
|
||||
v 0.611346 0.016080 -0.306624
|
||||
v -0.470543 0.265985 -0.746662
|
||||
v 0.645688 0.080608 -0.378195
|
||||
v 0.795836 0.348309 -0.064792
|
||||
v 0.827845 0.405378 0.002021
|
||||
v -0.138238 0.858457 -0.053043
|
||||
v -0.106229 0.915526 0.013769
|
||||
v 0.003506 -0.010911 0.752536
|
||||
v 0.380043 -0.216558 0.747800
|
||||
v 0.348034 -0.273628 0.680987
|
||||
v -0.028503 -0.067981 0.685724
|
||||
v 0.047738 -0.809030 0.054181
|
||||
v 0.197886 -0.541329 0.367584
|
||||
v 0.138238 -0.858457 0.053043
|
||||
v 0.288386 -0.590756 0.366446
|
||||
v 0.438534 -0.323055 0.679849
|
||||
v 0.106229 -0.915526 -0.013769
|
||||
v 0.470543 -0.265985 0.746662
|
||||
v -0.328799 -0.603383 0.058918
|
||||
v -0.705335 -0.397736 0.063654
|
||||
v -0.737345 -0.454805 -0.003159
|
||||
v -0.360808 -0.660452 -0.007895
|
||||
v 0.015729 -0.866099 -0.012631
|
||||
v -0.373030 0.194736 0.757272
|
||||
v -0.405040 0.137666 0.690460
|
||||
v -0.555187 -0.130035 0.377057
|
||||
v -0.645688 -0.080608 0.378195
|
||||
v -0.795836 -0.348309 0.064792
|
||||
v -0.495540 0.187093 0.691598
|
||||
v -0.827845 -0.405378 -0.002021
|
||||
v -0.463531 0.244163 0.758410
|
||||
v 0.555187 0.130035 -0.377057
|
||||
v 0.520846 0.065507 -0.305486
|
||||
v 0.611346 0.016080 -0.306624
|
||||
v 0.645688 0.080608 -0.378195
|
||||
v 0.670994 0.333208 0.007917
|
||||
v 0.370698 -0.202194 -0.618889
|
||||
v 0.520846 0.065507 -0.305486
|
||||
vn 0.335692 0.630762 -0.699607
|
||||
vn 0.342281 0.610259 0.714442
|
||||
vn -0.342282 -0.610259 -0.714442
|
||||
vn -0.877584 0.479296 0.011038
|
||||
vn 0.877584 -0.479296 -0.011038
|
||||
vn -0.877584 0.479295 0.011038
|
||||
vn -0.342281 -0.610259 -0.714442
|
||||
vn -0.877584 0.479295 0.011039
|
||||
vn 0.877584 -0.479295 -0.011038
|
||||
vn 0.335693 0.630761 -0.699607
|
||||
vn -0.335692 -0.630762 0.699607
|
||||
vn 0.342282 0.610259 0.714442
|
||||
vn 0.877584 -0.479295 -0.011039
|
||||
vn -0.335693 -0.630761 0.699607
|
||||
vn -0.877584 0.479296 0.011039
|
||||
vn 0.335693 0.630761 -0.699608
|
||||
vn 0.877584 -0.479296 -0.011039
|
||||
vn -0.335693 -0.630761 0.699608
|
||||
s off
|
||||
f 144//12 145//12 146//12 147//12
|
||||
f 145//13 144//13 148//13 149//13
|
||||
f 147//14 146//14 150//14 151//14
|
||||
f 152//15 153//15 154//15 155//15
|
||||
f 156//16 157//16 158//16 159//16
|
||||
f 160//15 161//15 162//15 163//15
|
||||
f 164//17 165//17 166//17 167//17
|
||||
f 168//16 169//16 170//16 171//16
|
||||
f 172//15 173//15 174//15 175//15
|
||||
f 175//18 174//18 169//18 168//18
|
||||
f 168//14 176//14 177//14 175//14
|
||||
f 175//19 177//19 178//19 172//19
|
||||
f 171//16 179//16 176//16 168//16
|
||||
f 167//15 180//15 181//15 164//15
|
||||
f 163//15 182//15 183//15 160//15
|
||||
f 159//20 184//20 185//20 156//20
|
||||
f 155//19 146//19 145//19 152//19
|
||||
f 152//13 145//13 184//13 159//13
|
||||
f 156//18 185//18 146//18 155//18
|
||||
f 186//15 187//15 173//15 188//15
|
||||
f 189//15 178//15 190//15 191//15
|
||||
f 242//7 243//7 276//7 275//7
|
||||
f 193//16 192//16 179//16 194//16
|
||||
f 194//16 185//16 195//16 193//16
|
||||
f 243//7 245//7 278//7 276//7
|
||||
f 191//15 150//15 146//15 189//15
|
||||
f 189//21 146//21 185//21 194//21
|
||||
f 192//16 196//16 176//16 179//16
|
||||
f 185//16 184//16 197//16 195//16
|
||||
f 229//7 196//7 265//7 271//7
|
||||
f 184//13 145//13 149//13 197//13
|
||||
f 198//15 199//15 165//15 200//15
|
||||
f 201//21 202//21 199//21 198//21
|
||||
f 203//18 204//18 205//18 206//18
|
||||
f 207//13 208//13 209//13 210//13
|
||||
f 210//22 209//22 204//22 203//22
|
||||
f 206//21 205//21 208//21 207//21
|
||||
f 207//21 211//21 212//21 206//21
|
||||
f 213//21 187//21 214//21 215//21
|
||||
f 215//21 216//21 202//21 213//21
|
||||
f 217//22 218//22 219//22 220//22
|
||||
f 221//21 222//21 223//21 224//21
|
||||
f 148//7 230//7 272//7 256//7
|
||||
f 197//7 149//7 257//7 266//7
|
||||
f 191//7 190//7 260//7 261//7
|
||||
f 230//7 246//7 279//7 272//7
|
||||
f 233//21 144//21 147//21 232//21
|
||||
f 144//13 233//13 230//13 148//13
|
||||
f 151//14 231//14 232//14 147//14
|
||||
f 163//18 162//18 204//18 234//18
|
||||
f 235//23 209//23 161//23 160//23
|
||||
f 234//24 204//24 209//24 235//24
|
||||
f 236//24 219//24 218//24 237//24
|
||||
f 167//18 166//18 219//18 236//18
|
||||
f 237//13 218//13 165//13 164//13
|
||||
f 164//13 181//13 223//13 237//13
|
||||
f 200//25 165//25 218//25 238//25
|
||||
f 239//21 223//21 181//21 240//21
|
||||
f 236//14 222//14 180//14 167//14
|
||||
f 237//16 223//16 222//16 236//16
|
||||
f 235//16 233//16 232//16 234//16
|
||||
f 160//13 183//13 233//13 235//13
|
||||
f 234//18 232//18 182//18 163//18
|
||||
f 238//16 218//16 202//16 201//16
|
||||
f 241//16 226//16 223//16 239//16
|
||||
f 246//7 244//7 277//7 279//7
|
||||
f 240//15 181//15 243//15 242//15
|
||||
f 242//15 244//15 182//15 240//15
|
||||
f 149//7 148//7 256//7 257//7
|
||||
f 239//16 232//16 231//16 241//16
|
||||
f 240//21 182//21 232//21 239//21
|
||||
f 181//26 180//26 245//26 243//26
|
||||
f 244//15 246//15 183//15 182//15
|
||||
f 150//7 191//7 261//7 258//7
|
||||
f 246//13 230//13 233//13 183//13
|
||||
f 169//18 174//18 214//18 247//18
|
||||
f 214//21 187//21 248//21 247//21
|
||||
f 171//13 170//13 173//13 172//13
|
||||
f 172//13 178//13 179//13 171//13
|
||||
f 217//23 173//23 187//23 213//23
|
||||
f 215//18 214//18 174//18 220//18
|
||||
f 220//25 174//25 173//25 217//25
|
||||
f 224//12 178//12 177//12 221//12
|
||||
f 221//18 177//18 229//18 228//18
|
||||
f 225//13 190//13 178//13 224//13
|
||||
f 188//25 173//25 170//25 249//25
|
||||
f 194//21 179//21 178//21 189//21
|
||||
f 245//7 227//7 269//7 278//7
|
||||
f 196//14 229//14 177//14 176//14
|
||||
f 250//18 216//18 219//18 166//18
|
||||
f 250//27 199//27 202//27 216//27
|
||||
f 213//23 202//23 218//23 217//23
|
||||
f 220//18 219//18 216//18 215//18
|
||||
f 228//18 227//18 222//18 221//18
|
||||
f 224//13 223//13 226//13 225//13
|
||||
f 231//7 151//7 259//7 273//7
|
||||
f 180//14 222//14 227//14 245//14
|
||||
f 203//25 154//25 153//25 210//25
|
||||
f 210//13 153//13 211//13 207//13
|
||||
f 206//18 212//18 154//18 203//18
|
||||
f 159//23 158//23 153//23 152//23
|
||||
f 155//18 154//18 157//18 156//18
|
||||
f 251//21 248//21 187//21 186//21
|
||||
f 249//16 170//16 248//16 251//16
|
||||
f 251//16 252//16 157//16 249//16
|
||||
f 186//21 212//21 252//21 251//21
|
||||
f 188//15 154//15 212//15 186//15
|
||||
f 249//25 157//25 154//25 188//25
|
||||
f 170//16 169//16 247//16 248//16
|
||||
f 252//28 253//28 158//28 157//28
|
||||
f 253//21 252//21 212//21 211//21
|
||||
f 253//23 211//23 153//23 158//23
|
||||
f 200//15 162//15 254//15 198//15
|
||||
f 198//21 254//21 205//21 201//21
|
||||
f 201//16 205//16 204//16 238//16
|
||||
f 238//25 204//25 162//25 200//25
|
||||
f 199//15 250//15 166//15 165//15
|
||||
f 162//15 161//15 255//15 254//15
|
||||
f 208//21 205//21 254//21 255//21
|
||||
f 161//23 209//23 208//23 255//23
|
||||
f 261//25 260//25 262//25 263//25
|
||||
f 263//25 264//25 258//25 261//25
|
||||
f 257//29 258//29 264//29 266//29
|
||||
f 267//25 268//25 269//25 270//25
|
||||
f 270//25 271//25 260//25 267//25
|
||||
f 259//25 258//25 257//25 256//25
|
||||
f 256//25 272//25 273//25 259//25
|
||||
f 275//25 276//25 268//25 274//25
|
||||
f 274//25 273//25 277//25 275//25
|
||||
f 279//25 277//25 273//25 272//25
|
||||
f 265//25 262//25 260//25 271//25
|
||||
f 269//25 268//25 276//25 278//25
|
||||
f 225//7 226//7 268//7 267//7
|
||||
f 192//7 193//7 263//7 262//7
|
||||
f 227//7 228//7 270//7 269//7
|
||||
f 193//7 195//7 264//7 263//7
|
||||
f 195//7 197//7 266//7 264//7
|
||||
f 196//7 192//7 262//7 265//7
|
||||
f 151//7 150//7 258//7 259//7
|
||||
f 228//7 229//7 271//7 270//7
|
||||
f 226//7 241//7 274//7 268//7
|
||||
f 190//7 225//7 267//7 260//7
|
||||
f 244//7 242//7 275//7 277//7
|
||||
f 241//7 231//7 273//7 274//7
|
||||
f 251//7 249//7 282//7 283//7
|
||||
f 188//7 186//7 280//7 281//7
|
||||
f 249//7 188//7 281//7 282//7
|
||||
f 186//7 251//7 283//7 280//7
|
||||
f 173//7 188//7 286//7 285//7
|
||||
f 188//7 154//7 284//7 286//7
|
||||
g holeycube.002
|
||||
v 0.369385 2.003562 1.792544
|
||||
v 0.963329 0.880686 2.925211
|
||||
v 0.707927 0.635014 2.815589
|
||||
v 0.113983 1.757890 1.682922
|
||||
v 0.111409 2.147654 2.070667
|
||||
v 0.705351 1.024778 3.203335
|
||||
v 0.449950 0.779106 3.093713
|
||||
v -0.143993 1.901982 1.961045
|
||||
v 2.047380 0.275193 1.756502
|
||||
v 3.131433 -0.330301 0.587792
|
||||
v 2.876031 -0.575973 0.478171
|
||||
v 1.791978 0.029521 1.646880
|
||||
v 1.934732 -0.240361 1.919116
|
||||
v 3.018785 -0.845855 0.750406
|
||||
v 3.274187 -0.600183 0.860028
|
||||
v 2.190134 0.005311 2.028738
|
||||
v 0.716742 2.790825 -0.781068
|
||||
v 1.800794 2.185331 -1.949777
|
||||
v 1.545392 1.939659 -2.059399
|
||||
v 0.461340 2.545153 -0.890690
|
||||
v -1.934732 0.240361 -1.919116
|
||||
v -0.850680 -0.365133 -3.087824
|
||||
v -1.106082 -0.610805 -3.197446
|
||||
v -2.190134 -0.005311 -2.028738
|
||||
v -0.716742 -2.790825 0.781068
|
||||
v 0.367311 -3.396319 -0.387641
|
||||
v 0.622713 -3.150647 -0.278019
|
||||
v -0.461340 -2.545153 0.890690
|
||||
v -0.604093 -2.275271 0.618455
|
||||
v 0.479959 -2.880765 -0.550255
|
||||
v 0.224557 -3.126437 -0.659877
|
||||
v -0.859495 -2.520943 0.508833
|
||||
v -1.800794 -2.185331 1.949777
|
||||
v -1.943547 -1.915450 1.677542
|
||||
v -1.688145 -1.669778 1.787164
|
||||
v -1.545392 -1.939659 2.059399
|
||||
v -3.274187 0.600183 -0.860028
|
||||
v -3.018785 0.845855 -0.750406
|
||||
v -0.622713 3.150647 0.278019
|
||||
v -0.367311 3.396319 0.387641
|
||||
v 1.106082 0.610805 3.197446
|
||||
v 0.850680 0.365133 3.087824
|
||||
v 1.935972 -1.872461 -0.314165
|
||||
v 0.737936 -3.024857 -0.828377
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
v -0.490109 -0.517382 2.301377
|
||||
v -1.946122 -1.525685 2.065288
|
||||
v -0.748086 -0.373290 2.579500
|
||||
v -1.803369 -1.795566 2.337522
|
||||
v -0.605333 -0.643171 2.851735
|
||||
v -0.347356 -0.787263 2.573611
|
||||
v 0.592703 0.509225 3.365948
|
||||
v -2.058771 -2.041239 2.227901
|
||||
v 0.848105 0.754897 3.475569
|
||||
v 0.605333 0.643171 -2.851735
|
||||
v -0.592703 -0.509225 -3.365948
|
||||
v 0.347356 0.787263 -2.573611
|
||||
v 0.748086 0.373290 -2.579500
|
||||
v -0.449950 -0.779106 -3.093713
|
||||
v 2.282089 0.546902 -0.654497
|
||||
v 1.688145 1.669778 -1.787164
|
||||
v 1.946122 1.525685 -2.065288
|
||||
v 2.540065 0.402810 -0.932619
|
||||
v 2.795467 0.648482 -0.822998
|
||||
v 2.201524 1.771358 -1.955666
|
||||
v 1.943547 1.915450 -1.677542
|
||||
v 2.537491 0.792574 -0.544875
|
||||
v 3.389409 -0.474393 0.309670
|
||||
v 3.134007 -0.720065 0.200048
|
||||
v 0.143993 -1.901982 -1.961045
|
||||
v 0.482534 -3.270529 -0.937999
|
||||
v -0.111409 -2.147654 -2.070667
|
||||
v -0.705351 -1.024778 -3.203335
|
||||
v -0.113983 -1.757890 -1.682922
|
||||
v -0.707927 -0.635014 -2.815589
|
||||
v -0.963329 -0.880686 -2.925211
|
||||
v -0.369385 -2.003562 -1.792544
|
||||
v -2.537491 -0.792574 0.544875
|
||||
v -3.131433 0.330301 -0.587792
|
||||
v -2.876031 0.575973 -0.478171
|
||||
v -2.282089 -0.546902 0.654497
|
||||
v -2.540065 -0.402810 0.932619
|
||||
v -3.134007 0.720065 -0.200048
|
||||
v -3.389409 0.474393 -0.309670
|
||||
v -2.795467 -0.648482 0.822998
|
||||
v -2.201524 -1.771358 1.955666
|
||||
v -0.482534 3.270529 0.937999
|
||||
v -0.737936 3.024857 0.828377
|
||||
v -0.479959 2.880765 0.550255
|
||||
v -0.224557 3.126437 0.659877
|
||||
v 0.604093 2.275271 -0.618455
|
||||
v 0.859495 2.520943 -0.508833
|
||||
v -2.047380 -0.275193 -1.756502
|
||||
v -1.791978 -0.029521 -1.646880
|
||||
v 0.490109 0.517382 -2.301377
|
||||
v -1.677995 1.728369 0.036042
|
||||
v -1.820749 1.998251 -0.236193
|
||||
v -1.935972 1.872461 0.314165
|
||||
v -2.078725 2.142343 0.041929
|
||||
v -3.276761 0.989947 -0.472284
|
||||
v -0.880689 3.294739 0.556142
|
||||
v -3.532163 0.744275 -0.581905
|
||||
v -0.625287 3.540411 0.665764
|
||||
v 0.625287 -3.540411 -0.665764
|
||||
v 0.880689 -3.294739 -0.556142
|
||||
v 1.820749 -1.998251 0.236193
|
||||
v -0.848105 -0.754897 -3.475569
|
||||
v 2.078725 -2.142343 -0.041929
|
||||
v 3.276761 -0.989947 0.472284
|
||||
v 3.532163 -0.744275 0.581905
|
||||
v 1.803369 1.795566 -2.337522
|
||||
v 2.058771 2.041239 -2.227901
|
||||
v 0.111409 2.147654 2.070667
|
||||
v 0.705351 1.024778 3.203335
|
||||
v 0.449950 0.779106 3.093713
|
||||
v -0.143993 1.901982 1.961045
|
||||
v -1.946122 -1.525685 2.065288
|
||||
v -0.748086 -0.373290 2.579500
|
||||
v -1.803369 -1.795566 2.337522
|
||||
v -0.605333 -0.643171 2.851735
|
||||
v 0.592703 0.509225 3.365948
|
||||
v -2.058771 -2.041239 2.227901
|
||||
v 0.848105 0.754897 3.475569
|
||||
v -2.540065 -0.402810 0.932619
|
||||
v -3.134007 0.720065 -0.200048
|
||||
v -3.389409 0.474393 -0.309670
|
||||
v -2.795467 -0.648482 0.822998
|
||||
v -2.201524 -1.771358 1.955666
|
||||
v -0.482534 3.270529 0.937999
|
||||
v -0.737936 3.024857 0.828377
|
||||
v -1.935972 1.872461 0.314165
|
||||
v -2.078725 2.142343 0.041929
|
||||
v -3.276761 0.989947 -0.472284
|
||||
v -0.880689 3.294739 0.556142
|
||||
v -3.532163 0.744275 -0.581905
|
||||
v -0.625287 3.540411 0.665764
|
||||
v 1.935972 -1.872461 -0.314165
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
v 1.820749 -1.998251 0.236193
|
||||
v 2.078725 -2.142343 -0.041929
|
||||
v 2.876031 -0.575973 0.478171
|
||||
v 0.479959 -2.880765 -0.550255
|
||||
v 1.677995 -1.728369 -0.036042
|
||||
vn 0.635737 -0.355088 -0.685384
|
||||
vn 0.688513 0.662283 0.295519
|
||||
vn -0.688513 -0.662283 -0.295518
|
||||
vn -0.348983 0.659767 -0.665521
|
||||
vn 0.348982 -0.659767 0.665521
|
||||
vn -0.348982 0.659767 -0.665521
|
||||
vn 0.348982 -0.659768 0.665521
|
||||
vn -0.688513 -0.662283 -0.295519
|
||||
vn 0.348983 -0.659767 0.665521
|
||||
vn -0.348982 0.659768 -0.665521
|
||||
vn 0.688513 0.662283 0.295518
|
||||
vn 0.635737 -0.355089 -0.685383
|
||||
vn -0.635737 0.355088 0.685384
|
||||
vn 0.688512 0.662283 0.295519
|
||||
vn -0.635737 0.355089 0.685383
|
||||
vn -0.688512 -0.662283 -0.295519
|
||||
vn 0.635737 -0.355089 -0.685384
|
||||
vn -0.635737 0.355089 0.685384
|
||||
s off
|
||||
f 287//30 288//30 289//30 290//30
|
||||
f 288//31 287//31 291//31 292//31
|
||||
f 290//32 289//32 293//32 294//32
|
||||
f 295//33 296//33 297//33 298//33
|
||||
f 299//34 300//34 301//34 302//34
|
||||
f 303//33 304//33 305//33 306//33
|
||||
f 307//35 308//35 309//35 310//35
|
||||
f 311//36 312//36 313//36 314//36
|
||||
f 315//35 316//35 317//35 318//35
|
||||
f 318//37 317//37 312//37 311//37
|
||||
f 311//37 319//37 320//37 318//37
|
||||
f 318//33 320//33 321//33 315//33
|
||||
f 314//38 322//38 319//38 311//38
|
||||
f 310//35 323//35 324//35 307//35
|
||||
f 306//39 325//39 326//39 303//39
|
||||
f 302//34 327//34 328//34 299//34
|
||||
f 298//33 289//33 288//33 295//33
|
||||
f 295//40 288//40 327//40 302//40
|
||||
f 299//37 328//37 289//37 298//37
|
||||
f 329//33 330//33 316//33 331//33
|
||||
f 332//33 321//33 333//33 334//33
|
||||
f 385//7 386//7 419//7 418//7
|
||||
f 336//38 335//38 322//38 337//38
|
||||
f 337//38 328//38 338//38 336//38
|
||||
f 386//7 388//7 421//7 419//7
|
||||
f 334//33 293//33 289//33 332//33
|
||||
f 332//41 289//41 328//41 337//41
|
||||
f 335//38 339//38 319//38 322//38
|
||||
f 328//38 327//38 340//38 338//38
|
||||
f 372//7 339//7 408//7 414//7
|
||||
f 327//31 288//31 292//31 340//31
|
||||
f 341//33 342//33 308//33 343//33
|
||||
f 344//41 345//41 342//41 341//41
|
||||
f 346//32 347//32 348//32 349//32
|
||||
f 350//40 351//40 352//40 353//40
|
||||
f 353//42 352//42 347//42 346//42
|
||||
f 349//41 348//41 351//41 350//41
|
||||
f 350//41 354//41 355//41 349//41
|
||||
f 356//41 330//41 357//41 358//41
|
||||
f 358//41 359//41 345//41 356//41
|
||||
f 360//42 361//42 362//42 363//42
|
||||
f 364//41 365//41 366//41 367//41
|
||||
f 291//7 373//7 415//7 399//7
|
||||
f 340//7 292//7 400//7 409//7
|
||||
f 334//7 333//7 403//7 404//7
|
||||
f 373//7 389//7 422//7 415//7
|
||||
f 376//41 287//41 290//41 375//41
|
||||
f 287//43 376//43 373//43 291//43
|
||||
f 294//37 374//37 375//37 290//37
|
||||
f 306//37 305//37 347//37 377//37
|
||||
f 378//31 352//31 304//31 303//31
|
||||
f 377//38 347//38 352//38 378//38
|
||||
f 379//38 362//38 361//38 380//38
|
||||
f 310//32 309//32 362//32 379//32
|
||||
f 380//31 361//31 308//31 307//31
|
||||
f 307//31 324//31 366//31 380//31
|
||||
f 343//44 308//44 361//44 381//44
|
||||
f 382//41 366//41 324//41 383//41
|
||||
f 379//32 365//32 323//32 310//32
|
||||
f 380//38 366//38 365//38 379//38
|
||||
f 378//34 376//34 375//34 377//34
|
||||
f 303//31 326//31 376//31 378//31
|
||||
f 377//37 375//37 325//37 306//37
|
||||
f 381//38 361//38 345//38 344//38
|
||||
f 384//38 369//38 366//38 382//38
|
||||
f 389//7 387//7 420//7 422//7
|
||||
f 383//33 324//33 386//33 385//33
|
||||
f 385//33 387//33 325//33 383//33
|
||||
f 292//7 291//7 399//7 400//7
|
||||
f 382//38 375//38 374//38 384//38
|
||||
f 383//41 325//41 375//41 382//41
|
||||
f 324//33 323//33 388//33 386//33
|
||||
f 387//35 389//35 326//35 325//35
|
||||
f 293//7 334//7 404//7 401//7
|
||||
f 389//43 373//43 376//43 326//43
|
||||
f 312//45 317//45 357//45 390//45
|
||||
f 357//46 330//46 391//46 390//46
|
||||
f 314//31 313//31 316//31 315//31
|
||||
f 315//31 321//31 322//31 314//31
|
||||
f 360//31 316//31 330//31 356//31
|
||||
f 358//45 357//45 317//45 363//45
|
||||
f 363//44 317//44 316//44 360//44
|
||||
f 367//30 321//30 320//30 364//30
|
||||
f 364//32 320//32 372//32 371//32
|
||||
f 368//40 333//40 321//40 367//40
|
||||
f 331//44 316//44 313//44 392//44
|
||||
f 337//46 322//46 321//46 332//46
|
||||
f 388//7 370//7 412//7 421//7
|
||||
f 339//32 372//32 320//32 319//32
|
||||
f 393//37 359//37 362//37 309//37
|
||||
f 393//41 342//41 345//41 359//41
|
||||
f 356//40 345//40 361//40 360//40
|
||||
f 363//37 362//37 359//37 358//37
|
||||
f 371//32 370//32 365//32 364//32
|
||||
f 367//40 366//40 369//40 368//40
|
||||
f 374//7 294//7 402//7 416//7
|
||||
f 323//32 365//32 370//32 388//32
|
||||
f 346//44 297//44 296//44 353//44
|
||||
f 353//40 296//40 354//40 350//40
|
||||
f 349//32 355//32 297//32 346//32
|
||||
f 302//40 301//40 296//40 295//40
|
||||
f 298//37 297//37 300//37 299//37
|
||||
f 394//41 391//41 330//41 329//41
|
||||
f 392//38 313//38 391//38 394//38
|
||||
f 394//38 395//38 300//38 392//38
|
||||
f 329//41 355//41 395//41 394//41
|
||||
f 331//33 297//33 355//33 329//33
|
||||
f 392//44 300//44 297//44 331//44
|
||||
f 313//34 312//34 390//34 391//34
|
||||
f 395//38 396//38 301//38 300//38
|
||||
f 396//41 395//41 355//41 354//41
|
||||
f 396//40 354//40 296//40 301//40
|
||||
f 343//33 305//33 397//33 341//33
|
||||
f 341//41 397//41 348//41 344//41
|
||||
f 344//38 348//38 347//38 381//38
|
||||
f 381//47 347//47 305//47 343//47
|
||||
f 342//33 393//33 309//33 308//33
|
||||
f 305//33 304//33 398//33 397//33
|
||||
f 351//41 348//41 397//41 398//41
|
||||
f 304//40 352//40 351//40 398//40
|
||||
f 404//44 403//44 405//44 406//44
|
||||
f 406//44 407//44 401//44 404//44
|
||||
f 400//44 401//44 407//44 409//44
|
||||
f 410//44 411//44 412//44 413//44
|
||||
f 413//44 414//44 403//44 410//44
|
||||
f 402//44 401//44 400//44 399//44
|
||||
f 399//44 415//44 416//44 402//44
|
||||
f 418//44 419//44 411//44 417//44
|
||||
f 417//44 416//44 420//44 418//44
|
||||
f 422//47 420//47 416//47 415//47
|
||||
f 408//44 405//44 403//44 414//44
|
||||
f 412//44 411//44 419//44 421//44
|
||||
f 368//7 369//7 411//7 410//7
|
||||
f 335//7 336//7 406//7 405//7
|
||||
f 370//7 371//7 413//7 412//7
|
||||
f 336//7 338//7 407//7 406//7
|
||||
f 338//7 340//7 409//7 407//7
|
||||
f 339//7 335//7 405//7 408//7
|
||||
f 294//7 293//7 401//7 402//7
|
||||
f 371//7 372//7 414//7 413//7
|
||||
f 369//7 384//7 417//7 411//7
|
||||
f 333//7 368//7 410//7 403//7
|
||||
f 387//7 385//7 418//7 420//7
|
||||
f 384//7 374//7 416//7 417//7
|
||||
f 394//7 392//7 425//7 426//7
|
||||
f 331//7 329//7 423//7 424//7
|
||||
f 392//7 331//7 424//7 425//7
|
||||
f 329//7 394//7 426//7 423//7
|
||||
f 316//7 331//7 429//7 428//7
|
||||
f 331//7 297//7 427//7 429//7
|
22
examples/16-shadowmaps/makefile
Normal file
22
examples/16-shadowmaps/makefile
Normal file
|
@ -0,0 +1,22 @@
|
|||
#
|
||||
# Copyright 2013-2014 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
|
BIN
examples/16-shadowmaps/screenshot.png
Normal file
BIN
examples/16-shadowmaps/screenshot.png
Normal file
Binary file not shown.
3296
examples/16-shadowmaps/shadowmaps.cpp
Normal file
3296
examples/16-shadowmaps/shadowmaps.cpp
Normal file
File diff suppressed because it is too large
Load diff
14156
examples/16-shadowmaps/tree.obj
Normal file
14156
examples/16-shadowmaps/tree.obj
Normal file
File diff suppressed because it is too large
Load diff
14
examples/16-shadowmaps/varying.def.sc
Normal file
14
examples/16-shadowmaps/varying.def.sc
Normal file
|
@ -0,0 +1,14 @@
|
|||
vec2 v_texcoord0 : TEXCOORD0 = vec2(0.0, 0.0);
|
||||
vec4 v_texcoord1 : TEXCOORD1 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_texcoord2 : TEXCOORD2 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_texcoord3 : TEXCOORD3 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_texcoord4 : TEXCOORD4 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec3 v_view : TEXCOORD5 = vec3(0.0, 0.0, 0.0);
|
||||
vec4 v_shadowcoord : TEXCOORD6 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 v_position : TEXCOORD7 = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec3 v_normal : NORMAL = vec3(0.0, 0.0, 1.0);
|
||||
float v_depth : FOG = 0.0;
|
||||
|
||||
vec3 a_position : POSITION;
|
||||
vec4 a_normal : NORMAL;
|
||||
vec2 a_texcoord0 : TEXCOORD0;
|
13
examples/16-shadowmaps/vs_shadowmaps_color.sc
Normal file
13
examples/16-shadowmaps/vs_shadowmaps_color.sc
Normal file
|
@ -0,0 +1,13 @@
|
|||
$input a_position
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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) );
|
||||
}
|
25
examples/16-shadowmaps/vs_shadowmaps_color_lightning.sc
Normal file
25
examples/16-shadowmaps/vs_shadowmaps_color_lightning.sc
Normal file
|
@ -0,0 +1,25 @@
|
|||
$input a_position, a_normal
|
||||
$output v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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) );
|
||||
}
|
36
examples/16-shadowmaps/vs_shadowmaps_color_lightning_csm.sc
Normal file
36
examples/16-shadowmaps/vs_shadowmaps_color_lightning_csm.sc
Normal file
|
@ -0,0 +1,36 @@
|
|||
$input a_position, a_normal
|
||||
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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
|
||||
$output v_normal, v_view, v_shadowcoord
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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-2014 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-2014 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;
|
||||
}
|
35
examples/16-shadowmaps/vs_shadowmaps_color_lightning_omni.sc
Normal file
35
examples/16-shadowmaps/vs_shadowmaps_color_lightning_omni.sc
Normal file
|
@ -0,0 +1,35 @@
|
|||
$input a_position, a_normal
|
||||
$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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);
|
||||
}
|
16
examples/16-shadowmaps/vs_shadowmaps_color_texture.sc
Normal file
16
examples/16-shadowmaps/vs_shadowmaps_color_texture.sc
Normal file
|
@ -0,0 +1,16 @@
|
|||
$input a_position, a_texcoord0
|
||||
$output v_texcoord0
|
||||
|
||||
/*
|
||||
* Copyright 2013-2014 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;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue