모를 때 참고
ShaderLab: 프로퍼티 - 작성
https://docs.unity3d.com/kr/530/Manual/SL-Properties.html
서피스 쉐이더 작성 - 인풋 아웃풋
https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaders.html
표면 쉐이더의 예시
https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaderExamples.html
표면 쉐이더 라이팅의 예시
https://docs.unity3d.com/kr/530/Manual/SL-SurfaceShaderLightingExamples.html
cg 다큐
cg programming tex2D
쉐이더란?
-화면에 출력 하는 필셀의 색을 정해주는 함수(음영과 색상을)
-쉐이더 = 음영(공간감을 느끼게 해주는 것)
-RGB(레드, 그린, 블루) 가산혼합 - 픽셀
-픽셀 쉐이더 - 한 픽셀의 색을 결정하는 코드
-ex) 흰색 RGB(100%, 100%, 100%) -> Float(1, 1, 1)
-쉐이더의 문법은 c# 문법과는 다르다
-float3 이미지의 알파 채널이 포함된다면 float4로 나타낼 수 있다
-색이 더해진다는 것은 색이 밝아진다는 것이다
------------------------------------------------------------------------
float3 a = float3(1.0, 1.0, 1.0)
float3 b = float3(2.0, 0, 0)
float3 c = a + b;
(2.0, 1.0, 1.0) -> 2, 1, 0 이지만 실제로 보이는 것은 1, 1, 0 이다
실제 데이터는 2, 1, 0 이다
*만약 최종수치가 (-)라면 0으로 보인다.
------------------------------------------------------------------------
하다가 막힐 때 -> cg프로그램 문법, ShaderLab 문법 ->찾아보기
빨강
Shader "Custom/MyShader" // (/)경로 (반드시 같을 필요는 없다.)
{
Properties //inspector창
{
_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 //cg코드 시작
{
Tags { "RenderType"="Opaque" } //불투명
//LOD 200 //디테일
CGPROGRAM
#pragma surface surf Standard fullforwardshadows //#pragma -> 함수로 ~하겠다 //surface surf Standard 까지는 기본 //Standard -> 조명 연산
// Use shader model 3.0 target, to get nicer looking lighting
//#pragma target 3.0
sampler2D _MainTex;
struct Input
{
//float2 uv_MainTex; //모르면 서피스 쉐이더 인풋 구조 찾아보기 //인풋에는 무조건 하나는 들어가야함.
};
//half _Glossiness;
//half _Metallic;
fixed4 _Color;
void surf (Input IN, inout SurfaceOutputStandard o) //surf안에 있는 것들이 색을 계산한다 //SurfaceOutputStandard -> 타입 //o -> 변수
{
// Albedo comes from a texture tinted by color
fixed4 c = _Color; //tex2D (_MainTex, IN.uv_MainTex) * _Color; //tex2D() -> cg의 메서드(어떤 값을 반환하는지 알아야함!) //float4 * float4라서 연산가능
o.Albedo = c.rgb;
//o.Metallic = _Metallic;
//o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG //cg코드 종료
}
FallBack "Diffuse"
}
* uv매핑이란? * -> 쉽게 말해서 3D를 펼치는 것
'Unity > 수업 내용' 카테고리의 다른 글
[게임 그래픽] Shader - Lerp (0) | 2021.11.18 |
---|---|
[게임 그래픽] Shader - Red (0) | 2021.11.17 |
[게임인공지능] - ML-Agents(Dino) (0) | 2021.11.17 |
[게임인공지능] - ML-Agents (해석) (0) | 2021.11.15 |
[게임인공지능] - ML-Agents(펭귄) (0) | 2021.11.12 |