Unity | 레이어마스크, 렌더링 텍스쳐

Clean·2025년 5월 9일

Unity

목록 보기
14/24

그래픽의 3요소

1. Vertex (정점)

물체의 가장 기본 단위인 점

2. Polygon (폴리곤)

물체를 이루는 최소 면 단위, Unity에서는 삼각형(Triangle)이 기본

3. Mesh (메시)

여러 폴리곤이 모여서 구성된 하나의 물체


LayerMask (레이어마스크)

Tag와 같이 오브젝트를 분류하는 방법

Unity의 LayerMask는 총 32개의 레이어를 사용할 수 있다.

int 자료형이 4byte = 32bit 기 때문에

0번부터 31번까지 총 32개의 bit로 레이어값을 가진다.

ex)
레이어 0 = 0000 0001 > 1 << 0
레이어 2 = 0000 0100 > 1 << 2
레이어 7 = 1000 0000 > 1 << 7


예전에 바람의나라를 따라 만들 때 맵 데이터에

1, 2, 4, 8, 16, 32, 64 와 같은 값이 있었는데

그때는 그냥 숫자조합이구나 하고 넘겼었는데

지금 생각해보면 2진수를 10진수로 표현한 방법이란걸 깨달았다.

예로 들어 맵에 13이란 값이 있으면 1 + 4 + 8 = 13 이라

0, 2, 3 레이어가 포함된 것이다.


비트 시프트 <<

카메라 컴포넌트의 Culling Mask에서 그릴 레이어들을 선택하거나

오브젝트의 레이어값을 변경할 때 인스펙터창에서도 변경할 수 있지만

비트 시프트 연산자 (<<) 를 사용해 코드로 지정할 수 있다.


OR |=

  1000 0000
| 0000 0001
= 1000 0001

// 레이어 0, 5, 6을 포함
int layer = (1 << 0) | (1 << 5) | (1 << 6);

레이어를 중첩할 때 사용하고 둘 중 하나라도 1이면 1이 된다.


NOT ~

~ 1111 0000
= 0000 1111

// 3번 레이어만 제외하고 나머지를 모두 포함
int layer = ~(1 << 3);

비트를 반전시켜 제외할 레이어를 지정할 때 사용된다.


AND &=

  1000 0000
& 0000 0001
= 0000 0000

// 특정 레이어가 포함되어 있는지 확인
int layer = (1 << 0) | (1 << 6);
bool hasLayer = (layer & (1 << 6)) != 0;

특정 레이어가 포함되어 있는지 확인할 때 사용하고 둘 다 1일 때만 1이 된다.


NamyToLayer(string)

int playerLayer = LayerMask.NameToLayer("Player");
gameObject.layer = playerLayer;

이름을 자릿수(int)로 반환하는 함수


RenderTexture (렌더 텍스처)

카메라가 렌더링한 결과를 일반 텍스처처럼 사용할 수 있게 해주는 기능

유니티 문서

게임에서 미니맵, 거울, CCTV 같은 곳에 사용된다.

0개의 댓글