* 쉐이더: 음영+색상 = 출력되는 픽셀의 색을 정해 재질을 표현함
* 랜더링 파이프라인: 3D장면을 행렬 변환을 통해 2D로 표현하는 과정
* 가산혼합: 모니터에 출력되는 RGB로 다 더하면 흰색
* 픽셀쉐이더: 픽셀 1개의 색을 결정하는 코드
* Float3(R,G,B)
흰색 Float3(1,1,1)
검은색 Float3(0,0,0)
노란색Float3(1,1,0)
* Float4(R,G,B,alpha)
흰색 반투명 Float4(1,1,1,0.5)
- 플로트 형식 입력
>Range(0,1)
>Float
>int
> Color
> Vector
- sampler형식 입력
> 2D
>3D
> Cube
- Float4형식 입력
> Color =(1,1,1,1)
> Vector = (1,1,1,1)
Shader "Custom/NewShader" // 이름
{
Properties // 메터리얼 인스팩터에서 입력할 수 있는 부위
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Standard fullforwardshadows noambient
#pragma target 3.0
sampler2D _MainTex;
struct Input // 엔진에서 받아오는 데이터 구조체. 무조건 1개는 있어야 함
{
float2 uv_MainTex;
};
// 전역 변수
half _Glossiness;
half _Metallic;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o) // 색상, 이미지 출력부
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
// o.Albedo = float3(1,0,0); // 빛이 영향을 받는 색 출력
o.Emission = float3(1,0,0); // 빛이 영향을 받지 않는 색 출력
//Albedo와 Emission을 같이 쓰면 = 밝아짐
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
'게임 그래픽 프로그래밍' 카테고리의 다른 글
셰이더3: 색 반전 및 밝기 조정 (0) | 2024.09.03 |
---|---|
셰이더3:lerp함수로 텍스쳐 섞기 (0) | 2024.09.03 |
셰이더3: 텍스쳐 입력 (0) | 2024.09.03 |
셰이더2: 기본 코드로 빨강 셰이더 만들기 (2) | 2024.09.02 |
쉐이더2: 인터페이스 생성해 외부 입력 받기 (1) | 2024.09.02 |