feat: fin du projet KEKW
This commit is contained in:
parent
37aa9f0ac5
commit
f5ac6b8172
|
@ -38,11 +38,15 @@ public class PerspectiveCorrectRasterizer extends Rasterizer {
|
|||
|
||||
Vector3 v = new Vector3(1.0, (double) x, (double) y);
|
||||
Vector bar = C.multiply(v);
|
||||
|
||||
if ((bar.get(0) >= 0.0) && (bar.get(1) >= 0.0) && (bar.get(2) >= 0.0)) {
|
||||
|
||||
double oneOverZ = bar.get(0) / v1.getDepth() +
|
||||
bar.get(1) / v2.getDepth() +
|
||||
bar.get(2) / v3.getDepth();
|
||||
|
||||
for (int i = 0; i < numAttributes; i++) {
|
||||
|
||||
double aOverZ = bar.get(0) * v1.getAttribute(i) / v1.getDepth() +
|
||||
bar.get(1) * v2.getAttribute(i) / v2.getDepth() +
|
||||
bar.get(2) * v3.getAttribute(i) / v3.getDepth();
|
||||
|
|
|
@ -26,7 +26,7 @@ public class Renderer {
|
|||
// shader = new SimpleShader(screen);
|
||||
shader = new PainterShader(screen);
|
||||
rasterizer = new PerspectiveCorrectRasterizer(shader);
|
||||
rasterizer = new Rasterizer(shader);
|
||||
// rasterizer = new Rasterizer(shader);
|
||||
|
||||
xform = new Transformation();
|
||||
xform.setLookAt(scene.getCameraPosition(), scene.getCameraLookAt(), scene.getCameraUp());
|
||||
|
@ -145,14 +145,14 @@ public class Renderer {
|
|||
/* wireframe rendering */
|
||||
renderWireframe();
|
||||
// screen.swapBuffers();
|
||||
wait(3);
|
||||
wait(1);
|
||||
|
||||
/* solid rendering, no lighting */
|
||||
screen.clearBuffer();
|
||||
shader.reset();
|
||||
renderSolid();
|
||||
screen.swapBuffers();
|
||||
wait(3);
|
||||
wait(1);
|
||||
|
||||
/* solid rendering, with lighting */
|
||||
screen.clearBuffer();
|
||||
|
@ -163,19 +163,17 @@ public class Renderer {
|
|||
wait(1);
|
||||
|
||||
/* solid rendering, with texture */
|
||||
/*
|
||||
* screen.clearBuffer ();
|
||||
* TextureShader texShader = new TextureShader (screen);
|
||||
* texShader.setTexture ("data/brick.jpg");
|
||||
* shader = texShader;
|
||||
* rasterizer.setShader (texShader);
|
||||
* setLightingEnabled (true);
|
||||
* renderSolid ();
|
||||
* screen.swapBuffers ();
|
||||
* wait (1);
|
||||
*/
|
||||
screen.clearBuffer();
|
||||
TextureShader texShader = new TextureShader(screen);
|
||||
texShader.setTexture("data/brick.jpg");
|
||||
shader = texShader;
|
||||
rasterizer.setShader(texShader);
|
||||
setLightingEnabled(true);
|
||||
renderSolid();
|
||||
screen.swapBuffers();
|
||||
wait(1);
|
||||
|
||||
wait(5);
|
||||
wait(60);
|
||||
screen.destroy();
|
||||
System.exit(0);
|
||||
}
|
||||
|
|
10
Texture.java
10
Texture.java
|
@ -28,8 +28,14 @@ public class Texture {
|
|||
*/
|
||||
public Color sample(double u, double v) {
|
||||
|
||||
/* A COMPLETER */
|
||||
double x = u * width;
|
||||
double y = v * height;
|
||||
|
||||
return new Color(0, 0, 0);
|
||||
int px = (int) Math.floor(x);
|
||||
int py = (int) Math.floor(y);
|
||||
|
||||
Color couleur = new Color(image.getRGB(px, py));
|
||||
|
||||
return couleur;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import java.awt.Color;
|
||||
|
||||
/**
|
||||
* Simple shader that just copy the interpolated color to the screen,
|
||||
* taking the depth of the fragment into acount.
|
||||
|
@ -34,8 +36,11 @@ public class TextureShader extends Shader {
|
|||
if (depth.testFragment(fragment)) {
|
||||
/* The Fragment may not have texture coordinates */
|
||||
try {
|
||||
double u = fragment.getAttribute(7) % 1;
|
||||
double v = fragment.getAttribute(8) % 1;
|
||||
|
||||
/* à compléter */
|
||||
Color couleur = texture.sample(u, v);
|
||||
screen.setPixel(fragment.getX(), fragment.getY(), couleur);
|
||||
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
screen.setPixel(fragment.getX(), fragment.getY(), fragment.getColor());
|
||||
|
|
Loading…
Reference in a new issue