+ | Texture working finally !

This commit is contained in:
TheRedShip
2025-01-28 23:08:37 +01:00
parent 23f2a9a5c6
commit c59a9c037f
10 changed files with 142175 additions and 1300 deletions

BIN
scenes/obj/Cat_diffuse.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

15
scenes/obj/cat.mtl Normal file
View File

@ -0,0 +1,15 @@
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 20.12.2011 11:12:50
newmtl Cat
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000
illum 2
Ka 1.0000 1.0000 1.0000
Kd 1.0000 1.0000 1.0000
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Kd Cat_diffuse.jpg

142137
scenes/obj/cat.obj Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,174 +11,3 @@ newmtl Material
d 1 d 1
Tr 0 Tr 0
map_Kd Material_baseColor.png map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png
newmtl Material
illum 2
Kd 1 1 1
Ke 0 0 0
Pr 0.80404085
Pm 0
d 1
Tr 0
map_Kd Material_baseColor.png

File diff suppressed because it is too large Load Diff

View File

@ -150,8 +150,10 @@ struct hitInfo
float last_t; float last_t;
vec3 normal; vec3 normal;
vec3 position; vec3 position;
int obj_index; int obj_index;
int mat_index; int mat_index;
int obj_type;
float u; float u;
float v; float v;

View File

@ -105,9 +105,16 @@ uniform sampler2D textures[32];
vec3 getTextureColor(int texture_index, hitInfo hit) vec3 getTextureColor(int texture_index, hitInfo hit)
{ {
GPUTriangle tri = triangles[hit.obj_index]; vec2 uv = vec2(0.0);
vec2 uv = hit.u * tri.texture_vertex2 + hit.v * tri.texture_vertex3 + (1 - (hit.u + hit.v)) * tri.texture_vertex1;
if (hit.obj_type == 0)
uv = getSphereUV(hit.normal);
else if (hit.obj_type == 3)
{
GPUTriangle tri = triangles[hit.obj_index];
uv = hit.u * tri.texture_vertex2 + hit.v * tri.texture_vertex3 + (1 - (hit.u + hit.v)) * tri.texture_vertex1;
}
return (texture(textures[texture_index], uv).rgb); return (texture(textures[texture_index], uv).rgb);
} }

View File

@ -45,6 +45,7 @@ hitInfo traceScene(Ray ray)
hit.t = temp_hit.t; hit.t = temp_hit.t;
hit.last_t = temp_hit.last_t; hit.last_t = temp_hit.last_t;
hit.obj_index = i; hit.obj_index = i;
hit.obj_type = obj.type;
hit.mat_index = obj.mat_index; hit.mat_index = obj.mat_index;
hit.position = temp_hit.position; hit.position = temp_hit.position;
hit.normal = temp_hit.normal; hit.normal = temp_hit.normal;
@ -152,6 +153,7 @@ hitInfo traverseBVHs(Ray ray)
hit.last_t = temp_hit.last_t / bvh_data.scale; hit.last_t = temp_hit.last_t / bvh_data.scale;
hit.obj_index = temp_hit.obj_index; hit.obj_index = temp_hit.obj_index;
hit.mat_index = temp_hit.mat_index; hit.mat_index = temp_hit.mat_index;
hit.obj_type = 3;
hit.position = inverseTransformMatrix * temp_hit.position + bvh_data.offset; hit.position = inverseTransformMatrix * temp_hit.position + bvh_data.offset;
hit.normal = normalize(inverseTransformMatrix * temp_hit.normal); hit.normal = normalize(inverseTransformMatrix * temp_hit.normal);
} }

View File

@ -228,7 +228,7 @@ void Scene::loadTextures()
unsigned char* image = stbi_load(path.c_str(), &width, &height, &channels, STBI_rgb_alpha); unsigned char* image = stbi_load(path.c_str(), &width, &height, &channels, STBI_rgb_alpha);
if (!image) if (!image)
throw std::runtime_error("Failed to load texture"); throw std::runtime_error("Failed to load texture " + path);
std::cout << "Loaded texture: " << path << " (" << width << "x" << height << ")" << std::endl; std::cout << "Loaded texture: " << path << " (" << width << "x" << height << ")" << std::endl;

View File

@ -67,7 +67,7 @@ Shader::Shader(std::string vertexPath, std::string fragmentPath, std::string com
const char *fragmentCode = loadFileWithIncludes(fragmentPath); const char *fragmentCode = loadFileWithIncludes(fragmentPath);
const char *computeCode = loadFileWithIncludes(computePath); const char *computeCode = loadFileWithIncludes(computePath);
printWithLineNumbers(computeCode); // printWithLineNumbers(computeCode);
_vertex = glCreateShader(GL_VERTEX_SHADER); _vertex = glCreateShader(GL_VERTEX_SHADER);