summaryrefslogtreecommitdiff
path: root/themes
diff options
context:
space:
mode:
Diffstat (limited to 'themes')
-rw-r--r--themes/Renderer3d.cpp18
-rw-r--r--themes/Renderer3d.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/themes/Renderer3d.cpp b/themes/Renderer3d.cpp
index a7779e2..300a73b 100644
--- a/themes/Renderer3d.cpp
+++ b/themes/Renderer3d.cpp
@@ -11,6 +11,7 @@
const char* vertexShader =
"attribute vec4 position; \n"
"attribute vec4 color; \n"
+"attribute vec4 normal \n"
"uniform mat4 projection; \n"
"uniform mat4 view; \n"
"uniform mat4 model; \n"
@@ -47,6 +48,7 @@ void Renderer3D::load(WebglContext* inContext) {
useShader(shader);
attributes.position = getShaderAttribute(shader, "position");
attributes.color = getShaderAttribute(shader, "color");
+ attributes.normal = getShaderAttribute(shader, "normal");
uniforms.projection = getShaderUniform(shader, "projection");
uniforms.view = getShaderUniform(shader, "view");
uniforms.model = getShaderUniform(shader, "model");
@@ -177,9 +179,19 @@ Mesh3d Mesh3d_fromObj(Renderer3D* renderer, const char* content, const i32 len)
lt.v.indices[lt.idx] = atoi(buffer);
lt.idx++;
}
- result.indices.add(lt.v.indices[0] - 1);
- result.indices.add(lt.v.indices[1] - 1);
- result.indices.add(lt.v.indices[2] - 1);
+
+ auto v1idx = lt.v.indices[0] - 1;
+ auto v2idx = lt.v.indices[1] - 1;
+ auto v3idx = lt.v.indices[2] - 1;
+
+ result.indices.add(v1idx);
+ result.indices.add(v2idx);
+ result.indices.add(v3idx);
+
+ auto v1 = result.vertices[v1idx];
+ auto v2 = result.vertices[v2idx];
+ auto v3 = result.vertices[v3idx];
+ auto normal = (v1 - v2).cross(v1 - v3);
break;
case LineType_Comment:
i = readPastLine(i, content);
diff --git a/themes/Renderer3d.h b/themes/Renderer3d.h
index 71fc8fe..7e89c93 100644
--- a/themes/Renderer3d.h
+++ b/themes/Renderer3d.h
@@ -10,6 +10,7 @@ struct Renderer3D;
struct Vertex3d {
Vector4 position;
Vector4 color;
+ Vector4 normal;
};
struct Mesh3d {
@@ -36,6 +37,7 @@ struct Renderer3D {
struct {
i32 position;
i32 color;
+ i32 normal;
} attributes;
struct {