게임 개발 자료

[Shader] Curved vertex shader

원소랑 2024. 1. 6. 15:32
728x90

카메라에서 멀어지면 커브를 줘서 꺾이는 듯한 시각 효과를 주는 셰이더. 적용하면 아래처럼 보임. 1인칭 러닝게임에 어울리는 셰이더.

 

실제 Transform 좌표는 더 위에 있지만 셰이더 연산으로 곡선으로 꺾이게 그림.

 

CG 코드.

struct appdata
{
	float4 vertex : POSITION;
	float2 uv : TEXCOORD0;
	float4 color : COLOR;
};

struct v2f
{
	float2 uv : TEXCOORD0;
	UNITY_FOG_COORDS(1)
	float4 color : TEXCOORD2;
	float4 vertex : SV_POSITION;
};

v2f vert(appdata v)
{
	v2f o;
	o.vertex = UnityObjectToClipPos(v.vertex);
	float dist = UNITY_Z_0_FAR_FROM_CLIPSPACE(o.vertex.z);
	o.vertex.y -= dist * dist * _ProjectionParams.x;
	o.uv = TRANSFORM_TEX(v.uv, _MainTex);
	o.color = v.color;

	UNITY_TRANSFER_FOG(o, o.vertex);
	return o;
}

 

float4 UnityObjectToClipPos(float3 pos)

오브젝트 공간의 한 점을 동질적인 좌표에 있는 카메라의 클립 공간으로 변환합니다. mul(UNITY_MATRIX_MVP, float4(pos, 1.0))과 같으며, 이를 대신하여 사용해야 합니다.

 

float dist = UNITY_Z_0_FAR_FROM_CLIPSPACE(o.vertex.z);

클립 공간(Z) 뎁스를 수동으로 사용하는 경우 다음 매크로를 사용하여 플랫폼 차이를 추상화할 수도 있습니다

 

_ProjectionParams (float4)

x is 1.0 (or –1.0 if currently rendering with a flipped projection matrix)

y is the camera’s near plane

z is the camera’s far plane

w is 1/FarPlane.

 

셰이더 빌트인 변수(Built-in shdaer variables)

https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html

 

Unity - Manual: Built-in shader variables

Built-in shader helper functions Shader data types and precision Built-in shader variables Unity’s built-in include files contain global variables for your shadersA program that runs on the GPU. More infoSee in Glossary: things like current object’s tr

docs.unity3d.com

 

빌트인 셰이더 헬퍼 함수

https://docs.unity3d.com/kr/2022.3/Manual/SL-BuiltinFunctions.html

 

빌트인 셰이더 헬퍼 함수 - Unity 매뉴얼

Unity에는 셰이더를 더 간편하고 쉽게 작성하는 데 유용한 빌트인 유틸리티 기능이 있습니다.

docs.unity3d.com

 

여러 그래픽스 API를 위한 셰이더 작성

https://docs.unity3d.com/kr/current/Manual/SL-PlatformDifferences.html

 

여러 그래픽스 API를 위한 셰이더 작성 - Unity 매뉴얼

간혹 서로 다른 그래픽스 API에서 그래픽스 렌더링이 다르게 작동할 수 있습니다. 대부분 Unity 에디터는 이러한 차이점을 숨기지만, 일부 경우 에디터가 이를 수행하지 못할 수 있습니다. 이러한

docs.unity3d.com

 


게임 개발에 필수적인 내용을 담는 명서들을 소개합니다.

 

<유니티 교과서 개정6판>(유니티 최신 버전) 구입 링크
https://link.coupang.com/a/be3P0t

 

유니티 교과서 개정6판

COUPANG

www.coupang.com


<리얼-타임 렌더링(REAL-TIME RENDERING) 4/e> 구입 링크
https://link.coupang.com/a/8VWas

 

리얼-타임 렌더링 4/e

COUPANG

www.coupang.com

 

<이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것> 구입 링크
https://link.coupang.com/a/9BqLd

 

이득우의 게임 수학:39가지 예제로 배운다! 메타버스를 구성하는 게임 수학의 모든 것

COUPANG

www.coupang.com

 

유니티 에셋 스토어 링크
https://assetstore.unity.com?aid=1011lvz7h

 

에셋스토어

여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.

assetstore.unity.com

(링크를 통해 도서/에셋 구입시 일정액의 수수료를 지급받습니다.)


 

728x90
반응형