본문 바로가기
Shader

GetVertexPositionInputs

by 대마왕J 2020. 12. 14.

URP의 셰이더에서 Vetex 메트릭스 연산을 하는 부분은 이렇게 함수로 빠져있다. 

 

 

VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz );

 

 

이 부분은 Core.hlsl에 정의되어 있다. 

순서는 늘 그렇듯. 

OS(Object Space) -> WS(World Space) -> VS(View Space) -> CS(Clip Space) 로 되어 있고 , 

이걸 다시 -1~1 범위인 NDC 좌표계(정규 좌표계)로 변환된다 

그 후에 프로젝션 파라미터를 연산하는 것을 볼 수 있다. 

 

VertexPositionInputs GetVertexPositionInputs(float3 positionOS)

{

    VertexPositionInputs input;

    input.positionWS = TransformObjectToWorld(positionOS);

    input.positionVS = TransformWorldToView(input.positionWS);

    input.positionCS = TransformWorldToHClip(input.positionWS);

    

    float4 ndc = input.positionCS * 0.5f;

    input.positionNDC.xy = float2(ndc.x, ndc.y * _ProjectionParams.x) + ndc.w;

    input.positionNDC.zw = input.positionCS.zw;

        

    return input;

}

 

 

 

* 2020.3 을 보니까 

Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl"

으로 빠져 있는 것을 발견했다. 

 

반응형

댓글