Shaders modif

This commit is contained in:
Antoine 2021-05-26 17:23:13 +02:00
parent 72c0098f9a
commit db4e2d0e86
10 changed files with 97 additions and 10 deletions

View File

@ -2,6 +2,8 @@
out vec4 FragColor;
uniform float time;
void main()
{
FragColor = vec4(1.0f, 1.0f, 1.0f, 1.0f);

View File

@ -4,6 +4,8 @@ in vec3 color;
out vec4 FragColor;
uniform float time;
void main()
{
FragColor = vec4(color, 1.0f);

View File

@ -1,10 +1,11 @@
#version 330 core
#version 410 core
out vec4 FragColor;
in vec2 texCoord;
uniform sampler2D texture1;
uniform float time;
void main()
{

View File

@ -1,4 +1,4 @@
#version 330 core
#version 410 core
layout (location = 0) in vec3 aPos;
layout (location = 2) in vec2 aTexCoord;

View File

@ -1,4 +1,4 @@
#version 330 core
#version 410 core
out vec4 FragColor;
@ -6,8 +6,14 @@ in vec4 color;
in vec2 texCoord;
uniform sampler2D texture1;
uniform float time;
void main()
{
FragColor = mix(texture(texture1, texCoord), color, 0.5);
vec4 tex = texture(texture1, texCoord);
if (tex.a == 0.0){
FragColor = tex;
} else{
FragColor = mix(tex, color, 0.5);
}
}

View File

@ -1,4 +1,4 @@
#version 330 core
#version 410 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;

View File

@ -0,0 +1,21 @@
#version 410
out vec4 FragColor;
in vec4 color;
in vec4 position;
in vec2 texCoord;
uniform sampler2D texture1;
uniform float time;
void main()
{ // Pas fini c'est moche
vec4 colorPoweredUp = vec4(color.xyz * sin(position.y + time*40) * cos(position.x + time*40), 1.0);
vec4 tex = texture(texture1, texCoord);
if (tex.a == 0.0){
FragColor = tex;
} else{
FragColor = mix(tex, colorPoweredUp, 0.5);
}
}

View File

@ -0,0 +1,21 @@
#version 410 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
layout (location = 2) in vec2 aTexCoord;
out vec4 position;
out vec2 texCoord;
out vec4 color;
uniform mat4 projection;
uniform mat4 view;
uniform mat4 transform;
void main()
{
gl_Position = projection * view * transform * vec4(aPos, 1.0);
color = vec4(aColor, 1.0f);
texCoord = aTexCoord;
position = vec4(aPos, 1.0);
}

View File

@ -170,10 +170,12 @@ public class Engine {
zangief.setTextureWrap(58,0,62,84, ObjectGl.STICK_TOP);
engine.add_objectGl(zangief);
zangief.translate(new Vector3f(-5000.0f,500.0f,10.0f));
zangief.setColor(new Vector3f(0.5f, 0.0f, 0.0f));
// zangief.setShader("shaders/PowerUpShader/VertEnergyWave.glsl","shaders/PowerUpShader/FragEnergyWave.glsl");
ObjectGl smiley2 = new ObjectGl(0.0f,500.0f,500.0f, 1f, path2, null);
engine.add_objectGl(smiley2);
smiley2.translate(new Vector3f(0.0f,0.0f,5.0f));
// ObjectGl smiley2 = new ObjectGl(0.0f,500.0f,500.0f, 1f, path2, null);
// engine.add_objectGl(smiley2);
// smiley2.translate(new Vector3f(0.0f,0.0f,5.0f));
long timer = System.currentTimeMillis();
long lastFrame;

View File

@ -3,6 +3,8 @@ package engine.object;
import engine.graphics.*;
import engine.math.*;
import static org.lwjgl.glfw.GLFW.glfwGetTime;
/**
*
*/
@ -30,6 +32,8 @@ public class ObjectGl {
private float height;
private float scalingFactor;
public boolean useTime;
private Texture texture;
/**
@ -57,15 +61,17 @@ public class ObjectGl {
this.texture = new Texture(tex, 0);
}
this.vertexArray = new VertexArray(Primitive.createRectangle(z, w, h), Primitive.rectangle_indices, colorBuffer, Primitive.stdTexWrap);
this.zPos = z;
this.height = h;
this.width = w;
this.vertexArray = new VertexArray(Primitive.createRectangle(this.zPos, this.width, this.height), Primitive.rectangle_indices, colorBuffer, Primitive.stdTexWrap);
this.scalingFactor = size;
this.transform = Matrix4f.identity();
this.scale(new Vector3f(size, size,1f));
this.stick_state = DEFAULT;
this.useTime = false;
// use different shader for each set of option
if (tex == null && color == null){
@ -177,6 +183,29 @@ public class ObjectGl {
this.setTextureWrap(result);
}
/**
* Set a new shader to be used by this object
* @param vert path to glsl Vertex Shader
* @param frag path to glsl Fragment Shader
*/
public void setShader(String vert, String frag){
this.shader = new Shader(vert, frag);
}
/**
* Set a new Color for the object if the shader do not use the color attrib this will make no change.
* @param color Vector3f r,g,b format
*/
public void setColor(Vector3f color){
float[] colorBuffer = new float[] {
color.x, color.y, color.z,
color.x, color.y, color.z,
color.x, color.y, color.z,
color.x, color.y, color.z
};
this.vertexArray = new VertexArray(Primitive.createRectangle(this.zPos, this.width, this.height), Primitive.rectangle_indices, colorBuffer, Primitive.stdTexWrap);
}
private void setTextureWrap(float[] texture){
this.vertexArray.swapTextureBufferObject(texture);
}
@ -189,9 +218,12 @@ public class ObjectGl {
* Do shader binding, texture binding and vertexArray drawing
*/
public void render(){
this.shader.enable();
if (this.texture != null) this.texture.bind();
if (this.useTime) this.shader.setUniform1f("time", (float) glfwGetTime());
this.shader.setUniformMat4f("projection", projection);
this.shader.setUniformMat4f("view", view);
this.shader.setUniformMat4f("transform", this.transform);