1

バンプ マッピングを使用してシェーダーを作成しようとしています。

オブジェクトの実際の法線と、法線をサンプリングしたバンプ マップがあります。私がやりたいのは、サンプリングされた法線を回転させて、サンプリングされた法線の「上」が実際の法線の方向を向くようにすることです。

私は数学に取り組んできましたが、正しく理解できないようです... Y はこの世界で起きています。

// Vertex shader sends this matrix to the pixel shader
OUT.normal[0] = mul((float3x3)world, normal);
float3 temptan = cross(normal, float3(0, 0, 1));
temptan = normalize(temptan);
OUT.normal[2] = mul((float3x3)world, temptan);
OUT.normal[1] = cross(OUT.normal[0], OUT.normal[2]); calculating binormal (in world space)

// Pixel Shader:
// Get normal from bump texture
float3 normal = tex2D(normalmap, texCoord);
normal = normal * 2 - 1;
// Swap Z and Y, since Z is up on the texture, but Y is up in this world.
float temp = normal[1];
normal[1] = -normal[2];
normal[2] = temp;
// Multiply the sampled normal and the normal-basis matrix together.
normal = mul(normalMat, normal);
4

1 に答える 1