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);//월드에서 VS로
input.positionCS = TransformWorldToHClip(input.positionWS ); // 월드에서 CS로
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"
으로 빠져 있는 것을 발견했다.
'Shader ' 카테고리의 다른 글
URP Position Transform (0) | 2021.01.27 |
---|---|
외부 오브젝트의 값을 셰이더에 넘겨주기 (1) | 2021.01.27 |
shader_feature와 multi_compile의 차이 (0) | 2020.11.08 |
Legacy Pipeline Depth Texture 레거시 파이프라인 깊이 텍스쳐 (0) | 2020.07.02 |
URP에서 Particle Vertex Stream으로 UV 조절하기 (1) | 2020.06.25 |
댓글