mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-25 17:18:12 -05:00
110 lines
3.2 KiB
Text
110 lines
3.2 KiB
Text
|
mat3 xll_constructMat3_mf4x4( mat4 m) {
|
||
|
return mat3( vec3( m[0]), vec3( m[1]), vec3( m[2]));
|
||
|
}
|
||
|
struct VertexOutput {
|
||
|
vec4 pos;
|
||
|
vec4 tex;
|
||
|
vec4 posWorld;
|
||
|
vec3 normalWorld;
|
||
|
vec4 tangentWorld;
|
||
|
vec3 extra;
|
||
|
vec4 _ShadowCoord;
|
||
|
vec3 lightDir;
|
||
|
};
|
||
|
struct VertexInput {
|
||
|
vec4 vertex;
|
||
|
vec3 normal;
|
||
|
vec4 texcoord;
|
||
|
vec4 texcoord1;
|
||
|
vec4 tangent;
|
||
|
};
|
||
|
uniform vec4 _ProjectionParams;
|
||
|
uniform vec4 _ScreenParams;
|
||
|
uniform vec4 _WorldSpaceLightPos0;
|
||
|
|
||
|
uniform mat4 _Object2World;
|
||
|
uniform mat4 _World2Object;
|
||
|
uniform vec4 unity_Scale;
|
||
|
uniform mat4 glstate_matrix_transpose_modelview0;
|
||
|
|
||
|
uniform samplerCube _Cube;
|
||
|
uniform sampler2D _MainTex;
|
||
|
uniform vec4 _MainTex_ST;
|
||
|
uniform sampler2D _DetailAlbedoMap;
|
||
|
uniform vec4 _DetailAlbedoMap_ST;
|
||
|
uniform sampler2D _AlphaMap;
|
||
|
uniform sampler2D _Occlusion;
|
||
|
uniform sampler2D _DetailNormalMap;
|
||
|
uniform vec4 _DetailNormalMap_ST;
|
||
|
uniform float _DetailNormalMapScale;
|
||
|
uniform sampler2D _BumpMap;
|
||
|
uniform float _BumpScale;
|
||
|
uniform float _Exposure;
|
||
|
uniform float _DetailBumpScale;
|
||
|
uniform float _AlphaTestRef;
|
||
|
uniform float _DetailBumpTiling;
|
||
|
uniform vec4 _Color;
|
||
|
uniform vec4 _SpecularColor;
|
||
|
uniform sampler2D _SpecGlossMap;
|
||
|
uniform float _Glossiness;
|
||
|
|
||
|
uniform vec4 unity_ColorSpaceGrey;
|
||
|
|
||
|
uniform vec4 _LightColor0;
|
||
|
|
||
|
uniform samplerCube _SpecCube;
|
||
|
uniform vec4 unity_LightmapST;
|
||
|
uniform sampler2D unity_Lightmap;
|
||
|
uniform sampler2D unity_LightmapInd;
|
||
|
uniform float _SelfIllumScale;
|
||
|
uniform sampler2D _SelfIllum;
|
||
|
|
||
|
vec4 ComputeScreenPos( in vec4 pos ) {
|
||
|
vec4 o = (pos * 0.5);
|
||
|
o.xy = (vec2( o.x, (o.y * _ProjectionParams.x)) + o.w);
|
||
|
o.zw = pos.zw;
|
||
|
return o;
|
||
|
}
|
||
|
|
||
|
VertexOutput vert( in VertexInput v ) {
|
||
|
VertexOutput o;
|
||
|
o.posWorld = (_Object2World * v.vertex);
|
||
|
o.pos = (gl_ModelViewProjectionMatrix * v.vertex);
|
||
|
o.tex = v.texcoord;
|
||
|
o.tex.xy = ((v.texcoord.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
|
||
|
o.tex.zw = ((v.texcoord.xy * _DetailAlbedoMap_ST.xy) + _DetailAlbedoMap_ST.zw);
|
||
|
o.normalWorld = normalize((xll_constructMat3_mf4x4( _Object2World) * v.normal));
|
||
|
o.tangentWorld = vec4( (xll_constructMat3_mf4x4( _Object2World) * v.tangent.xyz), v.tangent.w);
|
||
|
o.tangentWorld.xyz = normalize(o.tangentWorld.xyz);
|
||
|
o._ShadowCoord = ComputeScreenPos( o.pos);
|
||
|
o.extra.xy = ((v.texcoord1.xy * unity_LightmapST.xy) + unity_LightmapST.zw);
|
||
|
o.extra.z = 0.0;
|
||
|
return o;
|
||
|
}
|
||
|
attribute vec4 TANGENT;
|
||
|
varying vec4 xlv_TEXCOORD0;
|
||
|
varying vec4 xlv_TEXCOORD1;
|
||
|
varying vec3 xlv_TEXCOORD2;
|
||
|
varying vec4 xlv_TEXCOORD3;
|
||
|
varying vec3 xlv_TEXCOORD4;
|
||
|
varying vec4 xlv_TEXCOORD5;
|
||
|
varying vec3 xlv_TEXCOORD7;
|
||
|
void main() {
|
||
|
VertexOutput xl_retval;
|
||
|
VertexInput xlt_v;
|
||
|
xlt_v.vertex = vec4(gl_Vertex);
|
||
|
xlt_v.normal = vec3(gl_Normal);
|
||
|
xlt_v.texcoord = vec4(gl_MultiTexCoord0);
|
||
|
xlt_v.texcoord1 = vec4(gl_MultiTexCoord1);
|
||
|
xlt_v.tangent = vec4(TANGENT);
|
||
|
xl_retval = vert( xlt_v);
|
||
|
gl_Position = vec4(xl_retval.pos);
|
||
|
xlv_TEXCOORD0 = vec4(xl_retval.tex);
|
||
|
xlv_TEXCOORD1 = vec4(xl_retval.posWorld);
|
||
|
xlv_TEXCOORD2 = vec3(xl_retval.normalWorld);
|
||
|
xlv_TEXCOORD3 = vec4(xl_retval.tangentWorld);
|
||
|
xlv_TEXCOORD4 = vec3(xl_retval.extra);
|
||
|
xlv_TEXCOORD5 = vec4(xl_retval._ShadowCoord);
|
||
|
xlv_TEXCOORD7 = vec3(xl_retval.lightDir);
|
||
|
}
|