dev #12
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user