@@ -14,6 +14,7 @@ class Decal
1414 Decal (glm::vec3 position, glm::vec3 normal, glm::vec3 scale, Texture* texture, GameObject* Parent);
1515 glm::mat4 GetModel ();
1616 glm::vec3 GetNormal ();
17+ glm::vec3 GetScale ();
1718 bool CheckParentIsNull ();
1819 void RenderDecal (GLuint& programID);
1920
@@ -26,12 +27,107 @@ class Decal
2627 GameObject* parent = nullptr ;
2728 Transform transform;
2829
29- std::vector<unsigned short > indices = { 0 , 1 , 2 , 0 , 3 , 1 };
30- std::vector<glm::vec3> indexed_vertices = { glm::vec3 (1.0 , 0.0 ,1.0 ),glm::vec3 (-1.0 ,0.0 ,-1.0 ),glm::vec3 (-1.0 , 0.0 ,1.0 ),glm::vec3 (1.0 ,0.0 ,-1.0 ) };
31- std::vector<glm::vec2> indexed_uvs = { glm::vec2 (1.0 ,-0.0 ),glm::vec2 (0.0 ,-1.0 ),glm::vec2 (0.0 ,-0.0 ),glm::vec2 (1.0 ,-1.0 ) };
32- std::vector<glm::vec3> indexed_normals = { glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ) };
33- std::vector<glm::vec3> indexed_tangents = { glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ) };
34- std::vector<glm::vec3> indexed_bitangents = { glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ),glm::vec3 (-0.0 ,1.0 ,-0.0 ) };
30+ std::vector<glm::vec3> indexed_vertices = {
31+ // Front face
32+ glm::vec3 (-1 .0f , -1 .0f , 1 .0f ), // Bottom-left
33+ glm::vec3 (1 .0f , -1 .0f , 1 .0f ), // Bottom-right
34+ glm::vec3 (1 .0f , 1 .0f , 1 .0f ), // Top-right
35+ glm::vec3 (-1 .0f , 1 .0f , 1 .0f ), // Top-left
36+
37+ // Back face
38+ glm::vec3 (-1 .0f , -1 .0f , -1 .0f ), // Bottom-left
39+ glm::vec3 (1 .0f , -1 .0f , -1 .0f ), // Bottom-right
40+ glm::vec3 (1 .0f , 1 .0f , -1 .0f ), // Top-right
41+ glm::vec3 (-1 .0f , 1 .0f , -1 .0f ) // Top-left
42+ };
43+
44+ // Correct winding order for each face
45+ std::vector<unsigned short > indices = {
46+ // front
47+ 0 , 1 , 2 ,
48+ 2 , 3 , 0 ,
49+ // right
50+ 1 , 5 , 6 ,
51+ 6 , 2 , 1 ,
52+ // back
53+ 7 , 6 , 5 ,
54+ 5 , 4 , 7 ,
55+ // left
56+ 4 , 0 , 3 ,
57+ 3 , 7 , 4 ,
58+ // bottom
59+ 4 , 5 , 1 ,
60+ 1 , 0 , 4 ,
61+ // top
62+ 3 , 2 , 6 ,
63+ 6 , 7 , 3
64+ };
65+
66+ // UV coordinates (matching vertex order)
67+ std::vector<glm::vec2> indexed_uvs = {
68+ // front face
69+ glm::vec2 (0 .0f , 0 .0f ), // 0
70+ glm::vec2 (1 .0f , 0 .0f ), // 1
71+ glm::vec2 (1 .0f , 1 .0f ), // 2
72+ glm::vec2 (0 .0f , 1 .0f ), // 3
73+
74+ // right face
75+ glm::vec2 (0 .0f , 0 .0f ), // 4
76+ glm::vec2 (1 .0f , 0 .0f ), // 5
77+ glm::vec2 (1 .0f , 1 .0f ), // 6
78+ glm::vec2 (0 .0f , 1 .0f ), // 7
79+
80+ // back face
81+ glm::vec2 (0 .0f , 0 .0f ), // 8
82+ glm::vec2 (1 .0f , 0 .0f ), // 9
83+ glm::vec2 (1 .0f , 1 .0f ), // 10
84+ glm::vec2 (0 .0f , 1 .0f ), // 11
85+
86+ // left face
87+ glm::vec2 (0 .0f , 0 .0f ), // 12
88+ glm::vec2 (1 .0f , 0 .0f ), // 13
89+ glm::vec2 (1 .0f , 1 .0f ), // 14
90+ glm::vec2 (0 .0f , 1 .0f ), // 15
91+
92+ // bottom face
93+ glm::vec2 (0 .0f , 0 .0f ), // 16
94+ glm::vec2 (1 .0f , 0 .0f ), // 17
95+ glm::vec2 (1 .0f , 1 .0f ), // 18
96+ glm::vec2 (0 .0f , 1 .0f ), // 19
97+
98+ // top face
99+ glm::vec2 (0 .0f , 0 .0f ), // 20
100+ glm::vec2 (1 .0f , 0 .0f ), // 21
101+ glm::vec2 (1 .0f , 1 .0f ), // 22
102+ glm::vec2 (0 .0f , 1 .0f ) // 23
103+ };
104+
105+ // Normals (one per face)
106+ std::vector<glm::vec3> indexed_normals = {
107+ glm::vec3 (0 .0f , 0 .0f , -1 .0f ), glm::vec3 (0 .0f , 0 .0f , -1 .0f ),
108+ glm::vec3 (0 .0f , 0 .0f , -1 .0f ), glm::vec3 (0 .0f , 0 .0f , -1 .0f ),
109+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f ),
110+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f ),
111+ glm::vec3 (-1 .0f , 0 .0f , 0 .0f ), glm::vec3 (-1 .0f , 0 .0f , 0 .0f ),
112+ glm::vec3 (1 .0f , 0 .0f , 0 .0f ), glm::vec3 (1 .0f , 0 .0f , 0 .0f ),
113+ glm::vec3 (0 .0f , -1 .0f , 0 .0f ), glm::vec3 (0 .0f , -1 .0f , 0 .0f ),
114+ glm::vec3 (0 .0f , 1 .0f , 0 .0f ), glm::vec3 (0 .0f , 1 .0f , 0 .0f )
115+ };
116+
117+ // Set tangents and bitangents to point upwards
118+ std::vector<glm::vec3> indexed_tangents = {
119+ glm::vec3 (1 .0f , 0 .0f , 0 .0f ), glm::vec3 (1 .0f , 0 .0f , 0 .0f ),
120+ glm::vec3 (1 .0f , 0 .0f , 0 .0f ), glm::vec3 (1 .0f , 0 .0f , 0 .0f ),
121+ glm::vec3 (1 .0f , 0 .0f , 0 .0f ), glm::vec3 (1 .0f , 0 .0f , 0 .0f ),
122+ glm::vec3 (1 .0f , 0 .0f , 0 .0f ), glm::vec3 (1 .0f , 0 .0f , 0 .0f )
123+ };
124+
125+ std::vector<glm::vec3> indexed_bitangents = {
126+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f ),
127+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f ),
128+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f ),
129+ glm::vec3 (0 .0f , 0 .0f , 1 .0f ), glm::vec3 (0 .0f , 0 .0f , 1 .0f )
130+ };
35131
36132
37133 // TODO:: Fix this so all decals are renderer in one draw call
0 commit comments