현재 레이 트레이서에서 작업 중이며 문제가 발생했습니다. 평면, 원통 및 구형에 대한 텍스처 매핑을 구현했으며 꽤 잘 작동합니다 ... 노멀 맵 부분을 제외하고. 다음은 각 픽셀의 월드 내 위치 및 월드 내 법선입니다. world-space normals. 그리고 약간의 접선 공간 법선 맵 (일반 법선 맵).레이 트레이싱 일반 매핑
저는 접선 공간 법선을 월드 공간으로 변환하는 방법을 생각할 수 없습니다. "TBN"행렬을 사용해 보았지만 법선은 꺼져 있습니다 : normal map projected normals.
그리고 여기에 새로운 정상을 계산하는 내 코드입니다 :
VEC3 t = vec3_cross(worldnormal, new_vec3(0.0, 1.0, 0.0));
VEC3 b;
if (!vec3_length(t))
t = vec3_cross(worldnormal, new_vec3(0.0, 0.0, 1.0));
t = vec3_normalize(t);
b = vec3_normalize((vec3_cross(worldnormal, t)));
VEC3 map_n = vec3_normalize(get_texture_color(normal_map, texcoords));
MAT3 tbn = new_mat3(t, b, worldnormal);
worldnormal = vec3_normalize(mat3_mult_vec3(tbn, map_n));
get_texture_color()는 노멀 맵의 텍스처 색상 그래서 255.f