/* -------------------------------------------------------------------------------- This source file is part of SkyX. Visit http://www.paradise-studios.net/products/skyx/ Copyright (C) 2009-2012 Xavier Verguín González This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA, or go to http://www.gnu.org/copyleft/lesser.txt. -------------------------------------------------------------------------------- */ // ------------------- SkyX volumetric clouds + lightning ----------------------- // ------------------------------ GLSL Vertex ----------------------------------- // IN attribute vec4 vertex; // iPosition attribute vec3 uv0; // i3DCoord attribute vec2 uv1; // iNoiseUV attribute float uv2; // iOpacity // OUT varying vec3 v3DCoord; varying vec2 vNoiseUV; varying float vOpacity; varying vec3 vEyePixel; varying float vDistance; varying vec4 vPositionAtt; // UNIFORM uniform vec3 uCameraPosition; uniform float uRadius; void main(void) { // Clip space position gl_Position = gl_ModelViewProjectionMatrix * vertex; // 3D coords v3DCoord = uv0; // Noise coords vNoiseUV = uv1; // Opacity vOpacity = uv2; // Eye to pixel vector vEyePixel = normalize(vertex.xyz - uCameraPosition); // Distance in [0,1] range vDistance = length(vec2(vertex.x, vertex.z)) / uRadius; vPositionAtt.xyz = vertex.xyz; vPositionAtt.w = 225.0/uRadius; }