summaryrefslogtreecommitdiffstats
path: root/cwd/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'cwd/shaders')
-rw-r--r--cwd/shaders/block.fs18
-rw-r--r--cwd/shaders/block.vs15
-rw-r--r--cwd/shaders/simple.fs7
-rw-r--r--cwd/shaders/simple.vs9
4 files changed, 43 insertions, 6 deletions
diff --git a/cwd/shaders/block.fs b/cwd/shaders/block.fs
index 8795fb2..d1716bc 100644
--- a/cwd/shaders/block.fs
+++ b/cwd/shaders/block.fs
@@ -1,11 +1,17 @@
#version 330 core
in vec2 UvPosition;
+in vec3 FragmentPosition;
+flat in int Block;
+flat in int State;
+in vec4 ndcPos;
-uniform int Block;
-uniform int State;
+//uniform int Block;
+//uniform int State;
uniform sampler2D textureAtlas;
uniform float time;
+uniform int isInside;
+uniform vec2 windowSize;
// TextureIndex: [most significant bit]<-...<-side[3bit]<-id[13]<-state[4]
layout(std140) uniform TextureIndexes { // binding point: 0
@@ -23,7 +29,6 @@ vec4 GetDepthColor();
vec4 GetCheckerColor();
vec4 VTC(int value);
-in vec3 FragmentPosition;
int GetBlockSide(){
int side=6;
if (FragmentPosition.y==-0.5)
@@ -62,10 +67,15 @@ vec3 hsv2rgb(vec3 c)
void main() {
+/*gl_FragColor = vec4(0,1,0,1);
+if (isInside==0)
+ gl_FragColor = vec4(1,0,0,1);
+ return;*/
vec4 BlockTextureCoords = GetTextureByBlockId();
vec2 AtlasCoords = TransformTextureCoord(BlockTextureCoords, UvPosition);
gl_FragColor = texture(textureAtlas, AtlasCoords);
- if (id==2 && side==1) { //Grass colorizing
+ if (gl_FragColor.a<0.1) discard;
+ if (Block==2 && side==1 || Block==18 || Block==31 && state==1 || Block==31 && state==2) { //Grass and leaves colorizing
const float BiomeColor = 0.275;
vec3 hsvColor = rgb2hsv(gl_FragColor.xyz);
hsvColor[0]+=BiomeColor;
diff --git a/cwd/shaders/block.vs b/cwd/shaders/block.vs
index e8756c0..6c45c24 100644
--- a/cwd/shaders/block.vs
+++ b/cwd/shaders/block.vs
@@ -1,18 +1,29 @@
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 2) in vec2 UvCoordinates;
+layout (location = 7) in vec2 BlockId;
+layout (location = 8) in mat4 model;
+//layout (location = 12) in something....
out vec2 UvPosition;
out vec3 FragmentPosition;
+flat out int Block;
+flat out int State;
+out vec4 ndcPos;
uniform mat4 view;
uniform mat4 projection;
uniform float time;
-uniform mat4 model;
void main()
{
- gl_Position = projection * view * model * vec4(position, 1.0f);
UvPosition = vec2(UvCoordinates.x,UvCoordinates.y);
FragmentPosition = position;
+ Block = int(BlockId.x);
+ State = int(BlockId.y);
+
+ vec4 sourcePosition = vec4(position,1.0f);
+ ndcPos = (projection*view*model) * sourcePosition;
+ gl_Position = projection * view * model * sourcePosition;
+
}
diff --git a/cwd/shaders/simple.fs b/cwd/shaders/simple.fs
new file mode 100644
index 0000000..34cc192
--- /dev/null
+++ b/cwd/shaders/simple.fs
@@ -0,0 +1,7 @@
+#version 330 core
+
+uniform vec3 color;
+
+void main(){
+ gl_FragColor = vec4(color,1);
+} \ No newline at end of file
diff --git a/cwd/shaders/simple.vs b/cwd/shaders/simple.vs
new file mode 100644
index 0000000..8c9f37f
--- /dev/null
+++ b/cwd/shaders/simple.vs
@@ -0,0 +1,9 @@
+#version 330 core
+
+uniform mat4 view;
+uniform mat4 projection;
+layout (location = 0) in vec3 position;
+
+void main(){
+ gl_Position = vec4(position,1);//projection*view*vec4(position,1);
+} \ No newline at end of file