본문 바로가기
모바일 개발/유니티

유니티 | Texture 와 Shader

by KISCH 2018. 5. 16.
반응형

유니티



Texture


텍스처는 게임 오브젝트를 덮거나 래핑하는 이미지나 동영상 파일로 시각적인 효과를 나타냅니다.
# Texture Type

Texture : 

Normal map : 

Editor GUI and Legarcy GUI : 텍스처를 HUD, GUI컨트롤러에서 사용하는 경우

Sprite : 2D게임에서 스프라이트로 사용

Cursor : 커스텀 커서

Cubemap 

Cookie : 

Lightmap

Advanced


# Filter Mode 

텍스쳐 필터링 : 텍스처는 카메라의 위치에 따라 작거나 크게 표현 -> 이미지가 확대 변형 축소

Point : 빠르지만 변형 시 손상이 발생. 텍스처가 가까이에서 얼룩

Bilinear : 텍스쳐 샘플 평균화. 텍스처가 가까이에서 희미

Trillinear : 텍스처 샘플 평균화 밉맵 레벨사이값 블렌딩효과 적용.  left, center, right 기준 픽셀 혼합 필터


># Format

ATSC

OpenGL ES 3.0

안드로이드, IOS 공통 사용가능

텍스쳐 메로리 50% 절감

ETC2


# 기타 설정

Alpha from Grayscale : 알파 투명도 채널은 그림 이미지의 현재 밝기/어두움의 값에 따라 생성

Aniso Level : 가파른 각도에서 바라본 때의 텍스처 품질을 향상






Shader


# 유니티 shader 구분

1. Fixed Function Shader

2. Vertex / Fragment Shader : CG라는 nVidia에서 만든 언어로 만듬. Shader로 할 수 있는 것을 다함

3. Surface Shader : 빛의 값을 적절하게 변경하거나 조정


# 기본 구조

Shader "폴더/이름" {

Properties : 인스펙터 상에서 조절할 수 있는 부분


SubShader {

// A급 디바이스 처리

}

SubShader {

// B급 디바이스 처리

}

Fallback ""

}


- 구조는 성능에 따라 SubShader별로 분기

- Fallback에 SubShader로 찾지 못한 경우 지정된 이름의 셰이더를 찾아 다시 동작 가능한 SubShader를 찾음

- Pass의 수 만큼 오브젝트가 렌더링


# Vertex / Fragment - SubShader 구조p style="margin-left: 2em; line-height: 2;">Sampler2d : 프로퍼티에서 제작한 텍스쳐등을 메모리에 로드

Tags : 서브세이더의 동작 방식을 설정하는 여러 종류의 키와 쌍으로 이루어진 항목

Queue

Pass : 가장 핵심적인 명령 구문. 렌더링을 위한 설정과 세이더 프로그램 지정, 렌더링 진행

struct appdata : vertex shader inputs

float4 vertex : vertex 포지션

float2 uv : 텍스처 좌표

struct v2f : vertex shader outputs

float2 uv : 텍스처 좌표

float4 vertex : clip space position

v2f vert : 버텍스 위치를 오브젝트 공간에서 클립공간으로 변환하기만 함

fixed4 frag : 오브젝트가 화면에서 차지하고 있는 모든 픽셀마다 실행. 컬러 계산 출력


# CG

Color() : 단순 컬러 출력 (라이팅을 받지 않는)

Material 

LightMode


Lighting On / Off : 라이팅

Cull Back / Front / Off : 앞 뒤 렌더링

ZWrite

ZTest

Offset

Blend :

One

Zero

SrcColor

SRCALPHA

DstColor

DstAlpha

SrcAlphaSaturate

OneMinusSrcAlpha













반응형

댓글