티스토리 뷰

Camera 도 날 엿먹이는 구먼

MS의 첨병이 Right hand 를 쓸줄은..

설명 잘되어있다.

https://www.gamedev.net/resources/_/technical/graphics-programming-and-theory/perspective-projections-in-lh-and-rh-systems-r3598

x,y 축에 z가 붙는 방향은 정의에 따라 달라지는 거고

Cross product는 그 z 방향으로 (1, 0, 0) 을 내놓을 뿐이다.

이런 관점에서 볼때, 구분 가능한 사실은

// Compute actual up vector
up = Cross(right, forward);

Right 와 forward가 들어오고 Up은 (0, 1, 0) 이 쓰여진다면

RH 이다.

if (m_ReverseZ)
{
    Q1 = m_NearClip / (m_FarClip - m_NearClip);
    Q2 = Q1 * m_FarClip;
}
else
{
    Q1 = m_FarClip / (m_NearClip - m_FarClip);
    Q2 = Q1 * m_NearClip;
}

SetProjMatrix( Matrix4(
    Vector4( X, 0.0f, 0.0f, 0.0f ),
    Vector4( 0.0f, Y, 0.0f, 0.0f ),
    Vector4( 0.0f, 0.0f, Q1, -1.0f ),
    Vector4( 0.0f, 0.0f, Q2, 0.0f )
    ) );

-1.0 factor 도 그 증거 그리고 Q1, Q2 도 그 증거가 된다

헷갈린건 NDC는 LH로 고정된게 아니라 앞단의 정의에 따라 바뀐다는 거다

당연한 건데, OpenGL (RH) 가 NDC에서는 LH 로 바뀐다는 comment 땜시;

RH - Reverse Z

RH - Stanard Z

RH 에선 먼게 0 이다

http://dev.theomader.com/linear-depth/

라고 생각했는데,

이건 RH 고 reverse Z 인데 왜 저럼?

Linear Depth 는 왜 또 다르네

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크