1$input a_position, a_normal
2$output v_position, v_normal, v_view, v_texcoord1, v_texcoord2, v_texcoord3, v_texcoord4
3
4/*
5 * Copyright 2013-2014 Dario Manesku. All rights reserved.
6 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
7 */
8
9#include "../common/common.sh"
10
11uniform vec4 u_params1;
12#define u_shadowMapOffset u_params1.y
13
14uniform mat4 u_lightMtx;
15uniform mat4 u_shadowMapMtx0;
16uniform mat4 u_shadowMapMtx1;
17uniform mat4 u_shadowMapMtx2;
18uniform mat4 u_shadowMapMtx3;
19
20void main()
21{
22	gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0) );
23
24	vec4 normal = a_normal * 2.0 - 1.0;
25	v_normal = normalize(mul(u_modelView, vec4(normal.xyz, 0.0) ).xyz);
26	v_view = mul(u_modelView, vec4(a_position, 1.0)).xyz;
27
28	vec4 posOffset = vec4(a_position + normal.xyz * u_shadowMapOffset, 1.0);
29	v_position = mul(u_modelView, posOffset);
30
31	vec4 wpos = vec4(mul(u_model[0], posOffset).xyz, 1.0);
32	v_texcoord1 = mul(u_shadowMapMtx0, wpos);
33	v_texcoord2 = mul(u_shadowMapMtx1, wpos);
34	v_texcoord3 = mul(u_shadowMapMtx2, wpos);
35	v_texcoord4 = mul(u_shadowMapMtx3, wpos);
36
37	v_texcoord1.z += 0.5;
38	v_texcoord2.z += 0.5;
39	v_texcoord3.z += 0.5;
40	v_texcoord4.z += 0.5;
41}
42