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