0
\$\begingroup\$

I'd like to refer to this question because I didn't completely answer to my problem.

I've implemented normal and parallax mapping but because of some assumptions I have to use two different TBN matrices for each effect.

One of the most important assumptions is that I have deferred renderer with normals encoding and light calculations in view space.

This implies that I have to convert data from normal maps (which are in tangent space) to view space using below TBN matrix:

mat3 NormalMatrix = transpose(inverse(mat3(ModelViewMatrix))); vec3 T = normalize(NormalMatrix * Tangent); vec3 N = normalize(NormalMatrix * Normal); vec3 B = normalize(NormalMatrix * Bitangent); mat3 TBN = mat3(T, B, N); 

On the other hand parallax mapping required view direction vector in tangent space. To compute that I use camera position and fragment position (in world space) multiplied by following TBN matrix to move this vectors from world space to tangent space:

T = normalize(mat3(ModelMatrix) * Tangent); N = normalize(mat3(ModelMatrix) * Normal); B = normalize(mat3(ModelMatrix) * Bitangent); mat3 TBN = transpose(mat3(T, B, N)); 

I'm looking for a way to optimize that. Is it possible to make it better?

\$\endgroup\$
0

1 Answer 1

0
\$\begingroup\$

Do your normal mapping in world-space instead of view-space then you'd only have your second matrix.

\$\endgroup\$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.