forked from LaG1924/AltCraft
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
21 changed files
with
334 additions
and
367 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,4 +8,4 @@ | |
"MinLightLevel", | ||
"GlobalTime" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,44 @@ | ||
#version 330 core | ||
precision lowp float; | ||
|
||
in vec2 UvPosition; | ||
flat in uint Layer; | ||
|
||
in VS_OUT { | ||
vec2 UvPosition; | ||
vec3 Texture; | ||
vec3 Color; | ||
vec2 Light; | ||
flat float Light; | ||
flat vec3 Color; | ||
} fs_in; | ||
|
||
uniform sampler2DArray textureAtlas; | ||
uniform float DayTime; | ||
uniform float MinLightLevel; | ||
|
||
|
||
vec3 rgb2hsv(vec3 c) | ||
{ | ||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); | ||
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); | ||
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); | ||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); | ||
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); | ||
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); | ||
|
||
float d = q.x - min(q.w, q.y); | ||
float e = 1.0e-10; | ||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); | ||
float d = q.x - min(q.w, q.y); | ||
float e = 1.0e-10; | ||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); | ||
} | ||
|
||
vec3 hsv2rgb(vec3 c) | ||
{ | ||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); | ||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); | ||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); | ||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); | ||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); | ||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); | ||
} | ||
|
||
void main() { | ||
vec4 color = texture(textureAtlas,fs_in.Texture); | ||
if (color.a < 0.3) | ||
discard; | ||
vec4 color = texture(textureAtlas, vec3(UvPosition, Layer)); | ||
if (color.a < 0.3) | ||
discard; | ||
|
||
vec3 hsvColor = rgb2hsv(color.xyz); | ||
hsvColor+=fs_in.Color; | ||
vec3 hsvColor = rgb2hsv(color.xyz); | ||
hsvColor+=fs_in.Color; | ||
color = vec4(hsv2rgb(hsvColor),1); | ||
|
||
float light = fs_in.Light.x / 15.0; | ||
float skyLight = (fs_in.Light.y / 15.0) * DayTime; | ||
|
||
float faceLight = clamp(light + skyLight,MinLightLevel,1.0); | ||
|
||
color = vec4(color.rgb * faceLight, color.a); | ||
color.rgb *= fs_in.Light; | ||
gl_FragColor = color; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,56 @@ | ||
#version 330 core | ||
precision mediump float; | ||
precision mediump int; | ||
|
||
layout (location = 0) in vec3 position; | ||
layout (location = 2) in vec2 UvCoordinates; | ||
layout (location = 7) in vec4 Texture; | ||
layout (location = 8) in mat4 model; | ||
layout (location = 12) in vec3 color; | ||
layout (location = 13) in vec2 light; | ||
layout (location = 14) in float TextureLayer; | ||
layout (location = 15) in float TextureFrames; | ||
uniform float GlobalTime; | ||
uniform float DayTime; | ||
uniform float MinLightLevel; | ||
uniform mat4 projView; | ||
|
||
//Per quad info | ||
|
||
//xx yy ww hh 4*2=8 | ||
//p h l f 4*1=4 //12 | ||
//T(L1){Uu} (L2){Vv} 2*2=4 //16 | ||
|
||
layout(location = 0) in uvec2 qinfo; | ||
layout(location = 1) in vec2 uv; | ||
layout(location = 2) in vec3 positions[4]; | ||
//3 | ||
//4 | ||
//5 | ||
layout(location = 6) in uvec4 utex; | ||
layout(location = 7) in uvec4 phlf; | ||
|
||
out vec2 UvPosition; | ||
flat out uint Layer; | ||
|
||
out VS_OUT { | ||
vec2 UvPosition; | ||
vec3 Texture; | ||
vec3 Color; | ||
vec2 Light; | ||
flat float Light; | ||
flat vec3 Color; | ||
} vs_out; | ||
|
||
uniform float GlobalTime; | ||
uniform mat4 projView; | ||
//Intel SNB: VS vec4 shader: 55 instructions. 0 loops. 196 cycles. 0:0 spills:fills, 1 sends. Compacted 880 to 864 bytes (2%) | ||
|
||
vec3 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords, float Layer) { | ||
float x = TextureAtlasCoords.x; | ||
float y = TextureAtlasCoords.y; | ||
// float w = TextureAtlasCoords.z; | ||
float h = TextureAtlasCoords.w; | ||
vec2 transformed = vec2(x, 1 - y - h) + UvCoords * TextureAtlasCoords.zw; | ||
return vec3(transformed.x, transformed.y, Layer); | ||
} | ||
void main() { | ||
gl_Position = projView * vec4(positions[gl_VertexID], 1.0); | ||
|
||
vec4 subUV = vec4( | ||
uvec4(qinfo, qinfo >> uint(5)) & uint(0x1F) | ||
) / 16.0; | ||
|
||
vec4 tex = vec4(utex) / 1024.0; | ||
float frames = float(phlf.w); | ||
tex.w /= frames; | ||
tex.y += trunc(mod(GlobalTime * 4.0f, frames)) * tex.w; | ||
|
||
tex.xy += subUV.xy * tex.zw; | ||
tex.zw = (subUV.zw-subUV.xy) * tex.zw; | ||
|
||
UvPosition = tex.xy + tex.zw*uv; | ||
Layer = phlf.z; | ||
|
||
void main() | ||
{ | ||
vec4 sourcePosition = vec4(position,1.0f); | ||
gl_Position = projView * model * sourcePosition; | ||
|
||
vec4 texturePos = Texture; | ||
float frameHeight = texturePos.w / TextureFrames; | ||
float currentFrame = mod(GlobalTime * 4.0f, TextureFrames); | ||
currentFrame = trunc(currentFrame); | ||
texturePos.w = frameHeight; | ||
texturePos.y = texturePos.y + currentFrame * frameHeight; | ||
|
||
vs_out.UvPosition = UvCoordinates; | ||
vs_out.Texture = TransformTextureCoord(texturePos,UvCoordinates,TextureLayer); | ||
vs_out.Color = color; | ||
vs_out.Light = light; | ||
vec2 light = vec2((qinfo >> uint(10)) & uint(0xF)) / 15.0; | ||
vs_out.Light = clamp(light.x + (light.y * DayTime), MinLightLevel, 1.0); | ||
vs_out.Color = vec3(0.275, 0.63, 0.1) * (qinfo.x>>14); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.