Skip to content
Snippets Groups Projects
Commit abb72591 authored by Graham Madarasz's avatar Graham Madarasz
Browse files

Fixed line endings on shader

parent 89441228
No related branches found
No related tags found
No related merge requests found
/** /**
* @file alphaV.glsl * @file alphaV.glsl
* *
* $LicenseInfo:firstyear=2007&license=viewerlgpl$ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
* Second Life Viewer Source Code * Second Life Viewer Source Code
* Copyright (C) 2007, Linden Research, Inc. * Copyright (C) 2007, Linden Research, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; * License as published by the Free Software Foundation;
* version 2.1 of the License only. * version 2.1 of the License only.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$ * $/LicenseInfo$
*/ */
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
void calcAtmospherics(vec3 inPositionEye); void calcAtmospherics(vec3 inPositionEye);
vec3 calcDirectionalLight(vec3 n, vec3 l); vec3 calcDirectionalLight(vec3 n, vec3 l);
vec3 atmosAmbient(vec3 light); vec3 atmosAmbient(vec3 light);
vec3 atmosAffectDirectionalLight(float lightIntensity); vec3 atmosAffectDirectionalLight(float lightIntensity);
vec3 scaleDownLight(vec3 light); vec3 scaleDownLight(vec3 light);
vec3 scaleUpLight(vec3 light); vec3 scaleUpLight(vec3 light);
uniform mat3 normal_matrix; uniform mat3 normal_matrix;
uniform mat4 texture_matrix0; uniform mat4 texture_matrix0;
uniform mat4 projection_matrix; uniform mat4 projection_matrix;
uniform mat4 modelview_matrix; uniform mat4 modelview_matrix;
uniform mat4 modelview_projection_matrix; uniform mat4 modelview_projection_matrix;
ATTRIBUTE vec3 position; ATTRIBUTE vec3 position;
#ifdef USE_INDEXED_TEX #ifdef USE_INDEXED_TEX
void passTextureIndex(); void passTextureIndex();
#endif #endif
ATTRIBUTE vec3 normal; ATTRIBUTE vec3 normal;
#ifdef USE_VERTEX_COLOR #ifdef USE_VERTEX_COLOR
ATTRIBUTE vec4 diffuse_color; ATTRIBUTE vec4 diffuse_color;
#endif #endif
ATTRIBUTE vec2 texcoord0; ATTRIBUTE vec2 texcoord0;
#ifdef HAS_SKIN #ifdef HAS_SKIN
mat4 getObjectSkinnedTransform(); mat4 getObjectSkinnedTransform();
#else #else
#ifdef IS_AVATAR_SKIN #ifdef IS_AVATAR_SKIN
mat4 getSkinnedTransform(); mat4 getSkinnedTransform();
#endif #endif
#endif #endif
VARYING vec3 vary_ambient; VARYING vec3 vary_ambient;
VARYING vec3 vary_directional; VARYING vec3 vary_directional;
VARYING vec3 vary_fragcoord; VARYING vec3 vary_fragcoord;
VARYING vec3 vary_position; VARYING vec3 vary_position;
VARYING vec3 vary_pointlight_col; VARYING vec3 vary_pointlight_col;
#ifdef USE_VERTEX_COLOR #ifdef USE_VERTEX_COLOR
VARYING vec4 vertex_color; VARYING vec4 vertex_color;
#endif #endif
VARYING vec2 vary_texcoord0; VARYING vec2 vary_texcoord0;
VARYING vec3 vary_norm; VARYING vec3 vary_norm;
uniform float near_clip; uniform float near_clip;
uniform float shadow_offset; uniform float shadow_offset;
uniform float shadow_bias; uniform float shadow_bias;
uniform vec4 light_position[8]; uniform vec4 light_position[8];
uniform vec3 light_direction[8]; uniform vec3 light_direction[8];
uniform vec3 light_attenuation[8]; uniform vec3 light_attenuation[8];
uniform vec3 light_diffuse[8]; uniform vec3 light_diffuse[8];
vec3 calcDirectionalLight(vec3 n, vec3 l) vec3 calcDirectionalLight(vec3 n, vec3 l)
{ {
float a = max(dot(n,l),0.0); float a = max(dot(n,l),0.0);
return vec3(a,a,a); return vec3(a,a,a);
} }
vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight) vec3 calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
{ {
//get light vector //get light vector
vec3 lv = lp.xyz-v; vec3 lv = lp.xyz-v;
//get distance //get distance
float d = dot(lv,lv); float d = dot(lv,lv);
float da = 0.0; float da = 0.0;
if (d > 0.0 && la > 0.0 && fa > 0.0) if (d > 0.0 && la > 0.0 && fa > 0.0)
{ {
//normalize light vector //normalize light vector
lv = normalize(lv); lv = normalize(lv);
//distance attenuation //distance attenuation
float dist2 = d/la; float dist2 = d/la;
da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0); da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
// spotlight coefficient. // spotlight coefficient.
float spot = max(dot(-ln, lv), is_pointlight); float spot = max(dot(-ln, lv), is_pointlight);
da *= spot*spot; // GL_SPOT_EXPONENT=2 da *= spot*spot; // GL_SPOT_EXPONENT=2
//angular attenuation //angular attenuation
da *= max(dot(n, lv), 0.0); da *= max(dot(n, lv), 0.0);
} }
return vec3(da,da,da); return vec3(da,da,da);
} }
void main() void main()
{ {
vec4 pos; vec4 pos;
vec3 norm; vec3 norm;
//transform vertex //transform vertex
#ifdef HAS_SKIN #ifdef HAS_SKIN
mat4 trans = getObjectSkinnedTransform(); mat4 trans = getObjectSkinnedTransform();
trans = modelview_matrix * trans; trans = modelview_matrix * trans;
pos = trans * vec4(position.xyz, 1.0); pos = trans * vec4(position.xyz, 1.0);
norm = position.xyz + normal.xyz; norm = position.xyz + normal.xyz;
norm = normalize((trans * vec4(norm, 1.0)).xyz - pos.xyz); norm = normalize((trans * vec4(norm, 1.0)).xyz - pos.xyz);
vec4 frag_pos = projection_matrix * pos; vec4 frag_pos = projection_matrix * pos;
gl_Position = frag_pos; gl_Position = frag_pos;
#else #else
#ifdef IS_AVATAR_SKIN #ifdef IS_AVATAR_SKIN
mat4 trans = getSkinnedTransform(); mat4 trans = getSkinnedTransform();
vec4 pos_in = vec4(position.xyz, 1.0); vec4 pos_in = vec4(position.xyz, 1.0);
pos.x = dot(trans[0], pos_in); pos.x = dot(trans[0], pos_in);
pos.y = dot(trans[1], pos_in); pos.y = dot(trans[1], pos_in);
pos.z = dot(trans[2], pos_in); pos.z = dot(trans[2], pos_in);
pos.w = 1.0; pos.w = 1.0;
norm.x = dot(trans[0].xyz, normal); norm.x = dot(trans[0].xyz, normal);
norm.y = dot(trans[1].xyz, normal); norm.y = dot(trans[1].xyz, normal);
norm.z = dot(trans[2].xyz, normal); norm.z = dot(trans[2].xyz, normal);
norm = normalize(norm); norm = normalize(norm);
vec4 frag_pos = projection_matrix * pos; vec4 frag_pos = projection_matrix * pos;
gl_Position = frag_pos; gl_Position = frag_pos;
#else #else
norm = normalize(normal_matrix * normal); norm = normalize(normal_matrix * normal);
vec4 vert = vec4(position.xyz, 1.0); vec4 vert = vec4(position.xyz, 1.0);
pos = (modelview_matrix * vert); pos = (modelview_matrix * vert);
gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0); gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
#endif #endif
#endif #endif
#ifdef USE_INDEXED_TEX #ifdef USE_INDEXED_TEX
passTextureIndex(); passTextureIndex();
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy; vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
#else #else
vary_texcoord0 = texcoord0; vary_texcoord0 = texcoord0;
#endif #endif
vary_norm = norm; vary_norm = norm;
float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz)); float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset; vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
calcAtmospherics(pos.xyz); calcAtmospherics(pos.xyz);
#ifndef USE_VERTEX_COLOR #ifndef USE_VERTEX_COLOR
vec4 diffuse_color = vec4(1,1,1,1); vec4 diffuse_color = vec4(1,1,1,1);
#endif #endif
//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.)); //vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a); vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
vec3 dff = pow(diffuse_color.rgb, vec3(2.2f,2.2f,2.2f)); vec3 dff = pow(diffuse_color.rgb, vec3(2.2f,2.2f,2.2f));
vary_pointlight_col = dff; vary_pointlight_col = dff;
col.rgb = vec3(0,0,0); col.rgb = vec3(0,0,0);
// Add windlight lights // Add windlight lights
col.rgb = atmosAmbient(col.rgb); col.rgb = atmosAmbient(col.rgb);
vary_directional.rgb = atmosAffectDirectionalLight(1.0f); vary_directional.rgb = atmosAffectDirectionalLight(1.0f);
vary_ambient = col.rgb*dff; vary_ambient = col.rgb*dff;
col.rgb = col.rgb*dff; col.rgb = col.rgb*dff;
#ifdef USE_VERTEX_COLOR #ifdef USE_VERTEX_COLOR
vertex_color = col; vertex_color = col;
#endif #endif
#ifdef HAS_SKIN #ifdef HAS_SKIN
vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip); vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
#else #else
#ifdef IS_AVATAR_SKIN #ifdef IS_AVATAR_SKIN
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
#else #else
pos = modelview_projection_matrix * vert; pos = modelview_projection_matrix * vert;
vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip); vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
#endif #endif
#endif #endif
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment