soba =3
This commit is contained in:
+2
-1
@@ -2,6 +2,7 @@
|
||||
#define DELTA_MATH
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
class DeltaVector2 {
|
||||
public:
|
||||
@@ -57,7 +58,7 @@ struct DeltaModelConnector {
|
||||
|
||||
struct DeltaRenderTriangle {
|
||||
DeltaVertex a, b, c;
|
||||
bool invert;
|
||||
std::string texID;
|
||||
};
|
||||
|
||||
struct DeltaModel {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 114 B |
@@ -0,0 +1,6 @@
|
||||
; first line are positions, second line is uv points as well as texture id
|
||||
|
||||
0 0 0; 512 0 0; 0 512 0
|
||||
0 0; 1 0; 0 1; debug
|
||||
512 0 0; 512 512 0; 0 0 512
|
||||
1 0 1 1 0 1 debug
|
||||
+28
-19
@@ -41,7 +41,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
|
||||
return SDL_APP_FAILURE;
|
||||
}
|
||||
|
||||
if (!SDL_CreateWindowAndRenderer("game", SIMULATED_WIDTH, SIMULATED_HEIGHT, SDL_WINDOW_FULLSCREEN, &window, &renderer)) {
|
||||
if (!SDL_CreateWindowAndRenderer("game", SIMULATED_WIDTH, SIMULATED_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
|
||||
SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
|
||||
return SDL_APP_FAILURE;
|
||||
}
|
||||
@@ -54,19 +54,27 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
|
||||
|
||||
// delta shenanigans
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
triangles.push_back({ {{40 - i * 200.0f, 10, 200}, {0, 0}} , {{40 - i * 200.0f, 210, 0}, {1, 1}}, {{40 - i * 200.0f, 10, 0}, {0, 1}}});
|
||||
triangles.push_back({ {{40 - i * 200.0f, 210, 200}, {1, 0}}, {{40 - i * 200.0f, 210, 0}, {1, 1}}, {{40 - i * 200.0f, 10, 200}, {0, 0}} });
|
||||
}
|
||||
// for (int i = 0; i < 10; i++) {
|
||||
// triangles.push_back({ {{40 - i * 200.0f, 10, 200}, {0, 0}} , {{40 - i * 200.0f, 210, 0}, {8, 8}}, {{40 - i * 200.0f, 10, 0}, {0, 8}}});
|
||||
// triangles.push_back({ {{40 - i * 200.0f, 210, 200}, {8, 0}}, {{40 - i * 200.0f, 210, 0}, {8, 8}}, {{40 - i * 200.0f, 10, 200}, {0, 0}} });
|
||||
// }
|
||||
|
||||
// triangles.push_back({ {{10, 10, 200}, {0, 0}} , {{10, 410, 0}, {2, 1}}, {{10, 10, 0}, {0, 1}} , false});
|
||||
// triangles.push_back({ {{10, 410, 200}, {2, 0}}, {{10, 410, 0}, {2, 1}}, {{10, 10, 200}, {0, 0}} , false});
|
||||
// triangles.push_back({ {{410, 10, 0}, {0, 1}} , {{410, 410, 0}, {2, 1}}, {{410, 10, 200}, {0, 0}} , true});
|
||||
// triangles.push_back({ {{410, 10, 200}, {0, 0}}, {{410, 410, 0}, {2, 1}}, {{410, 410, 200}, {2, 0}} , true});
|
||||
// triangles.push_back({ {{10, 410, 200}, {0, 0}} , {{410, 410, 0}, {2, 1}}, {{10, 410, 0}, {0, 1}} , true});
|
||||
// triangles.push_back({ {{10, 410, 200}, {0, 0}}, {{410, 410, 200}, {2, 0}}, {{410, 410, 0}, {2, 1}} , true});
|
||||
// triangles.push_back({ {{10, 10, 200}, {0, 0}} , {{10, 10, 0}, {0, 1}}, {{410, 10, 0}, {2, 1}} , true});
|
||||
// triangles.push_back({ {{410, 10, 200}, {2, 0}} , {{10, 10, 200}, {0, 0}}, {{410, 10, 0}, {2, 1}} , true});
|
||||
triangles.push_back({ {{10, 10, 200}, {0, 0}} , {{10, 410, 0}, {2, 1}}, {{10, 10, 0}, {0, 1}} , "stone"});
|
||||
triangles.push_back({ {{10, 410, 200}, {2, 0}}, {{10, 410, 0}, {2, 1}}, {{10, 10, 200}, {0, 0}} , "stone"});
|
||||
triangles.push_back({ {{410, 10, 0}, {0, 1}} , {{410, 410, 0}, {2, 1}}, {{410, 10, 200}, {0, 0}} , "stone"});
|
||||
triangles.push_back({ {{410, 10, 200}, {0, 0}}, {{410, 410, 0}, {2, 1}}, {{410, 410, 200}, {2, 0}} , "stone"});
|
||||
triangles.push_back({ {{10, 410, 200}, {0, 0}} , {{410, 410, 0}, {2, 1}}, {{10, 410, 0}, {0, 1}} , "stone"});
|
||||
triangles.push_back({ {{10, 410, 200}, {0, 0}}, {{410, 410, 200}, {2, 0}}, {{410, 410, 0}, {2, 1}} , "stone"});
|
||||
triangles.push_back({ {{10, 10, 200}, {0, 0}} , {{10, 10, 0}, {0, 1}}, {{410, 10, 0}, {2, 1}} , "stone"});
|
||||
triangles.push_back({ {{410, 10, 200}, {2, 0}} , {{10, 10, 200}, {0, 0}}, {{410, 10, 0}, {2, 1}} , "stone"});
|
||||
|
||||
triangles.push_back({ {{410, -100, 150}, {1, 1}}, {{310, -100, 50}, {0, 0}}, {{410, -100, 50}, {1, 0}} , "debug"});
|
||||
|
||||
triangles.push_back({ {{10, 10, 0}, {0, 0}}, {{10, 410, 0}, {0, 2}}, {{410, 410, 0}, {2, 2}} , "stone"});
|
||||
triangles.push_back({ {{10, 10, 0}, {0, 0}}, {{410, 410, 0}, {2, 2}}, {{410, 10, 0}, {2, 0}} , "stone"});
|
||||
|
||||
triangles.push_back({ {{410, 410, 200}, {2, 2}}, {{10, 410, 200}, {0, 2}}, {{10, 10, 200}, {0, 0}} , "stone"});
|
||||
triangles.push_back({ {{410, 10, 200}, {2, 0}}, {{410, 410, 200}, {2, 2}}, {{10, 10, 200}, {0, 0}} , "stone"});
|
||||
|
||||
|
||||
backbuffer = SDL_CreateSurface(SIMULATED_WIDTH, SIMULATED_HEIGHT, SDL_PIXELFORMAT_ARGB8888);
|
||||
@@ -81,9 +89,10 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
|
||||
|
||||
SDL_SetTextureScaleMode(gpuTexture, SDL_SCALEMODE_NEAREST);
|
||||
|
||||
assets.loadTexture("stonebricks", "stone.png");
|
||||
assets.loadTexture("debug", "debug.png");
|
||||
assets.loadTexture("stone", "stone.png");
|
||||
|
||||
SDL_SetRenderVSync(renderer, 1);
|
||||
// SDL_SetRenderVSync(renderer, 1);
|
||||
|
||||
return SDL_APP_CONTINUE; /* carry on with the program! */
|
||||
}
|
||||
@@ -117,7 +126,7 @@ SDL_AppResult SDL_AppIterate(void *appstate)
|
||||
|
||||
// drawing starts here
|
||||
|
||||
SDL_FillSurfaceRect(backbuffer, NULL, 0xFF000000);
|
||||
SDL_FillSurfaceRect(backbuffer, NULL, 0xFF333333);
|
||||
|
||||
std::fill(depthbuffer.begin(), depthbuffer.end(), 0.0f);
|
||||
|
||||
@@ -136,16 +145,16 @@ SDL_AppResult SDL_AppIterate(void *appstate)
|
||||
if (numtriangles == 1) {
|
||||
// rasterizeTriangleFast(backbuffer, out1.a, out1.b, out1.c, SDLColorToUint32({ 255, 0, 0, 255 }));
|
||||
// rasterizeTriangleFast(backbuffer, out1.a, out1.b, out1.c, SDLColorToUint32({ 0, 0, 255, 255 }));
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out1.a, out1.b, out1.c, "stonebricks", uv1.a.x, uv1.a.y, uv1.b.x, uv1.b.y, uv1.c.x, uv1.c.y);
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out1.a, out1.b, out1.c, triangle.texID, uv1.a.x, uv1.a.y, uv1.b.x, uv1.b.y, uv1.c.x, uv1.c.y);
|
||||
// SDL_Log(std::to_string(triangle.a.y).c_str());
|
||||
// SDL_Log(std::to_string(triangle.b.y).c_str());
|
||||
// SDL_Log(std::to_string(triangle.c.y).c_str());
|
||||
}
|
||||
if (numtriangles == 2) {
|
||||
// rasterizeTriangleFast(backbuffer, out1.a, out1.b, out1.c, SDLColorToUint32({ 255, 0, 0, 255 }));
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out1.a, out1.b, out1.c, "stonebricks", uv1.a.x, uv1.a.y, uv1.b.x, uv1.b.y, uv1.c.x, uv1.c.y);
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out1.a, out1.b, out1.c, triangle.texID, uv1.a.x, uv1.a.y, uv1.b.x, uv1.b.y, uv1.c.x, uv1.c.y);
|
||||
// rasterizeTriangleFast(backbuffer, out1.c, out1.b, out1.a, SDLColorToUint32({ 0, 255, 0, 255 }));
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out2.a, out2.b, out2.c, "stonebricks", uv2.a.x, uv2.a.y, uv2.b.x, uv2.b.y, uv2.c.x, uv2.c.y);
|
||||
rasterizeTriangleSurface(assets, depthbuffer, backbuffer, out2.a, out2.b, out2.c, triangle.texID, uv2.a.x, uv2.a.y, uv2.b.x, uv2.b.y, uv2.c.x, uv2.c.y);
|
||||
}
|
||||
|
||||
// int intersected = clipTriangleAgainstNearPlane(0.1, { triangle.a, triangle.b, triangle.c }, triangle1, triangle2);
|
||||
|
||||
@@ -67,6 +67,7 @@ void rasterizeTriangleSurface(DeltaAssetLoader& assets, std::vector<float>& dept
|
||||
int texW = textureOrigin->w, texH = textureOrigin->h;
|
||||
|
||||
// main raster loop
|
||||
#pragma omp parallel for schedule(dynamic, 16)
|
||||
for (int y = minY; y <= maxY; y++) {
|
||||
float e0 = e0_row;
|
||||
float e1 = e1_row;
|
||||
|
||||
Reference in New Issue
Block a user