mirror of
https://git.stillkill.net/MinecraftLeak/MinecraftLegends.git
synced 2026-10-24 06:02:18 +01:00
Initial commit
This commit is contained in:
commit
86efc669e9
5013 files changed
+237743
No files matched your search
@@ -0,0 +1,94 @@
|
||||
#include "ShaderConstantsGNM.h"
|
||||
|
||||
struct VS_Input {
|
||||
float3 position : POSITION;
|
||||
float4 normal : NORMAL;
|
||||
float2 texCoords : TEXCOORD_0;
|
||||
float4 color : COLOR;
|
||||
};
|
||||
|
||||
|
||||
struct PS_Input {
|
||||
float4 position : S_POSITION;
|
||||
|
||||
#ifdef ENABLE_LIGHT
|
||||
float4 light : LIGHT;
|
||||
#endif
|
||||
#ifdef ENABLE_FOG
|
||||
float4 fogColor : FOG_COLOR;
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE_TINTING
|
||||
float4 color : COLOR;
|
||||
#endif
|
||||
float2 texCoords : TEXCOORD_0_FB_MSAA;
|
||||
};
|
||||
|
||||
static const float AMBIENT = 0.45;
|
||||
|
||||
static const float XFAC = -0.1;
|
||||
static const float ZFAC = 0.1;
|
||||
|
||||
|
||||
float4 TransformRGBA8_SNORM(const float4 RGBA8_SNORM) {
|
||||
#ifdef R8G8B8A8_SNORM_UNSUPPORTED
|
||||
return RGBA8_SNORM * float(2.0).xxxx - float(1.0).xxxx;
|
||||
#else
|
||||
return RGBA8_SNORM;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
float lightIntensity(const float4 position, const float4 normal) {
|
||||
#ifdef FANCY
|
||||
|
||||
float3 N = normalize(mul(WORLD, normal)).xyz;
|
||||
|
||||
N.y *= TILE_LIGHT_COLOR.a;
|
||||
|
||||
//take care of double sided polygons on materials without culling
|
||||
#ifdef FLIP_BACKFACES
|
||||
float3 viewDir = normalize((mul(WORLD, position)).xyz);
|
||||
if (dot(N, viewDir) > 0.0) {
|
||||
N *= -1.0;
|
||||
}
|
||||
#endif
|
||||
|
||||
float yLight = (1.0 + N.y) * 0.5;
|
||||
return yLight * (1.0 - AMBIENT) + N.x*N.x * XFAC + N.z*N.z * ZFAC + AMBIENT;
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
PS_Input main(in VS_Input VSInput) {
|
||||
PS_Input PSInput = (PS_Input)0;
|
||||
PSInput.position = mul(WORLDVIEWPROJ, float4(VSInput.position, 1));
|
||||
|
||||
#ifdef ENABLE_LIGHT
|
||||
float4 normal = TransformRGBA8_SNORM(VSInput.normal);
|
||||
|
||||
float L = lightIntensity(float4(VSInput.position, 1), normal);
|
||||
|
||||
PSInput.light = float4(L.xxx * TILE_LIGHT_COLOR.rgb, 1.0);
|
||||
#endif
|
||||
|
||||
int frameIndex = int(VSInput.color.a * 255.0f);
|
||||
PSInput.texCoords.xy = VSInput.texCoords.xy + BANNER_UV_OFFSETS[frameIndex].xy;
|
||||
|
||||
#ifndef DISABLE_TINTING
|
||||
PSInput.color = BANNER_COLORS[frameIndex];
|
||||
PSInput.color.a = 1.0f;
|
||||
if (frameIndex > 0) {
|
||||
PSInput.color.a = 0.0f;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_FOG
|
||||
//fog
|
||||
PSInput.fogColor.rgb = FOG_COLOR.rgb;
|
||||
PSInput.fogColor.a = clamp(((PSInput.position.z / RENDER_DISTANCE) - FOG_CONTROL.x) / (FOG_CONTROL.y - FOG_CONTROL.x), 0.0, 1.0);
|
||||
#endif
|
||||
|
||||
return PSInput;
|
||||
}
|
||||
Reference in new issue
Block a user