// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
#ifndef GLSL_SUPPORT_INCLUDED
#define GLSL_SUPPORT_INCLUDED
// Automatically included in raw GLSL (GLSLPROGRAM) shader snippets, to map from some of the legacy OpenGL
// variable names to uniform names used by Unity.
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif
uniform mat4 unity_ObjectToWorld;
uniform mat4 unity_WorldToObject;
uniform mat4 unity_MatrixVP;
uniform mat4 unity_MatrixV;
uniform mat4 unity_MatrixInvV;
uniform mat4 glstate_matrix_projection;
#define gl_ModelViewProjectionMatrix (unity_MatrixVP * unity_ObjectToWorld)
#define gl_ModelViewMatrix (unity_MatrixV * unity_ObjectToWorld)
#define gl_ModelViewMatrixTranspose (transpose(unity_MatrixV * unity_ObjectToWorld))
#define gl_ModelViewMatrixInverseTranspose (transpose(unity_WorldToObject * unity_MatrixInvV))
#define gl_NormalMatrix (transpose(mat3(unity_WorldToObject * unity_MatrixInvV)))
#define gl_ProjectionMatrix glstate_matrix_projection
#if __VERSION__ < 120
#ifndef UNITY_GLSL_STRIP_TRANSPOSE
mat3 transpose(mat3 mtx)
{
vec3 c0 = mtx[0];
vec3 c1 = mtx[1];
vec3 c2 = mtx[2];
return mat3(
vec3(c0.x, c1.x, c2.x),
vec3(c0.y, c1.y, c2.y),
vec3(c0.z, c1.z, c2.z)
);
}
mat4 transpose(mat4 mtx)
{
vec4 c0 = mtx[0];
vec4 c1 = mtx[1];
vec4 c2 = mtx[2];
vec4 c3 = mtx[3];
return mat4(
vec4(c0.x, c1.x, c2.x, c3.x),
vec4(c0.y, c1.y, c2.y, c3.y),
vec4(c0.z, c1.z, c2.z, c3.z),
vec4(c0.w, c1.w, c2.w, c3.w)
);
}
#endif
#endif // __VERSION__ < 120
#endif // GLSL_SUPPORT_INCLUDED