지금까지 한 것 정리
  • 텍스쳐나 색상, 값들은 Properties에 넣은 후 서로 연산/처리하는 과정
  • 버텍스의 UV 값을 엔진에 직접 요청하여 사용하는 과정
    (Position, Texcoord(UV), Normal, Tangent들은 버텍스 안에 내장되어 있는 대표적인 정보들임)

 

Vertex Color 활용


  • Vertex Color 적용
    • 3D DCC(Digital Contents Creation) - ex. 3ds Max
    • 엔진 자체의 툴

Package Manager 내의 Polybrush를 standard 버전으로 임포트하였다.

 

 

 

Polybrush Window를 꺼내어 Plane에 버텍스 컬러를 페인팅하였지만 기본 쉐이더는 버텍스 컬러를 출력하지 않기 때문에 일반적으로는 버텍스 컬러가 보이지 않는다.

 

 

 

 

코드 수정을 통한 버텍스 컬러 출력


 

 

 

아래와 같이 텍스쳐와 곱하는 등 다양한 방식으로 출력 컬러를 변경해볼 수도 있다.

 

 

 

마스킹 기능


 

  • Vertex Color는 일반적인 텍스쳐가 갖고 있는 UV와는 별개
  • Vertex Color는 일반적인 컬러와 동일하게 RGBA로 구성되어 있음.
Vertex Color를 마스킹으로 이용하여 멀티 텍스쳐링 기능 제작

 

멀티 텍스쳐 기능을 활용하기 위하여 여러 장의 텍스쳐를 받아올 수 있도록 코드를 변경하였다.
현재 Plane 오브젝트에는 Vertex Color가 칠해져 있는 상태이다.

 

R 채널만 출력

o.Albedo = IN.color.r;

 

lerp 함수 활용 (1)

o.Albedo = lerp(c.rgb, d.rgb, IN.color.r);

lerp 함수 활용 (2)

o.Albedo = lerp(c.rgb, d.rgb, IN.color.r);
o.Albedo = lerp(o.Albedo, e.rgb, IN.color.g);
o.Albedo = lerp(o.Albedo, f.rgb, IN.color.b);

유니티 쉐이더 작성

ShaderLab으로만 작성

  • ShaderLab 문법만 이용해서 작성하는 방법
  • 장점: 매우 가볍고 하드웨어 호환성이 좋음
    단점: 기능이 부족하며 자체 문법으로 이루어져 있어, 다른 쉐이더 문법과 거의 호환되지 않음. 고급 기법 구현 불가

Surface Shader로 작성

  • ShaderLab 스크립트와 함께 일부분은 CG 쉐이더 코드를 사용
  • 장점: 조명과 버텍스 쉐이더의 복잡한 부분은 스크립트가 자동 처리하며 픽셀 쉐이더 부분만 간편하게 작성할 수도 있어서 편리함.
    단점: 최적화에 무리가 있으며 일정 수준 이상의 고급 기법은 구현 불가

Vertex & Fragment Shader로 작성

  • ShaderLab 스크립트와 CG 쉐이더 코드를 모두 사용하며 보다 본격적인 쉐이더 작성 방법
  • 제대로 된 CG 쉐이더 방식으로 버텍스의 좌표 변환부터 제대로 처리해야 작동
  • 장점: 최적화와 고급 기법 표현에 유리

+ Recent posts