set pieces color

This commit is contained in:
2025-04-26 12:35:37 +02:00
parent 1b22de17d8
commit f8ae19fee8
2 changed files with 16 additions and 7 deletions

View File

@@ -22,6 +22,9 @@ public class Renderer {
private VertexArray boardVao;
private final PieceModel models;
private static final Vector3f BLACK = new Vector3f(0.1f, 0.1f, 0.1f);
private static final Vector3f WHITE = new Vector3f(0.7f, 0.7f, 0.7f);
public Renderer() {
this.boardShader = new BoardShader();
this.pieceShader = new PieceShader();
@@ -37,7 +40,8 @@ public class Renderer {
public void RenderPiece(Piece piece, Coordinate pos) {
try {
DDDModel pieceModel = this.models.getModel(piece);
Render(pieceModel, DDDPlacement.coordinates_to_vector(pos), piece.getColor() == Color.White ? 0.0f : 3.14f);
Render(pieceModel, piece.getColor() == Color.White ? WHITE : BLACK, DDDPlacement.coordinates_to_vector(pos),
piece.getColor() == Color.White ? 0.0f : 3.14f);
} catch (IOException e) {
e.printStackTrace();
}
@@ -51,9 +55,10 @@ public class Renderer {
RenderVao(this.boardShader, this.boardVao);
}
public void Render(DDDModel model, Vector2f position, float rotation) {
public void Render(DDDModel model, Vector3f color, Vector2f position, float rotation) {
Vector3f realPos = new Vector3f(position.x(), 0, position.y());
this.pieceShader.Start();
this.pieceShader.setModelColor(color);
this.pieceShader.setModelTransform(new Matrix4f().translate(realPos).rotate(rotation, new Vector3f(0, 1, 0)));
Render(model);
}

View File

@@ -1,6 +1,7 @@
package chess.view.DDDrender.shader;
import org.joml.Matrix4f;
import org.joml.Vector3f;
public class PieceShader extends ShaderProgram {
@@ -18,8 +19,6 @@ public class PieceShader extends ShaderProgram {
out vec3 toLightVector;
out vec3 surfaceNormal;
flat out vec3 pass_color;
void main(void){
vec4 worldPos = modelTransform * vec4(position, 1.0);
@@ -27,7 +26,6 @@ public class PieceShader extends ShaderProgram {
surfaceNormal = (modelTransform * vec4(normal, 0.0)).xyz;
gl_Position = camMatrix * worldPos;
pass_color = position;
}
""";
@@ -37,7 +35,7 @@ public class PieceShader extends ShaderProgram {
in vec3 toLightVector;
in vec3 surfaceNormal;
flat in vec3 pass_color;
uniform vec3 modelColor = vec3(1, 1, 1);
out vec4 out_color;
@@ -49,7 +47,7 @@ public class PieceShader extends ShaderProgram {
float brightness = diffuse;
out_color = vec4(pass_color, 1.0) * brightness;
out_color = vec4(modelColor, 1.0) * brightness;
out_color.w = 1.0;
}
@@ -57,6 +55,7 @@ public class PieceShader extends ShaderProgram {
private int location_CamMatrix = 0;
private int location_ModelTransform = 0;
private int location_ModelColor = 0;
public PieceShader() {
@@ -70,6 +69,7 @@ public class PieceShader extends ShaderProgram {
protected void GetAllUniformLocation() {
location_CamMatrix = GetUniformLocation("camMatrix");
location_ModelTransform = GetUniformLocation("modelTransform");
location_ModelColor = GetUniformLocation("modelColor");
}
public void SetCamMatrix(Matrix4f mat) {
@@ -79,4 +79,8 @@ public class PieceShader extends ShaderProgram {
public void setModelTransform(Matrix4f mat) {
LoadMat4(location_ModelTransform, mat);
}
public void setModelColor(Vector3f color) {
LoadVector(location_ModelColor, color);
}
}