디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

게임에서 쓰이는 동적 그림자를 생각해보다

ㅆㅇㅆ(124.216) 2024.07.05 09:30:02
조회 14750 추천 58 댓글 74

일단 보통 그림자는 2가지로 나눌 수 있음


Umbra - Penumbra


그림자 - 반그림자인데


반그림자는 전환 영역이고,


3eb8c836abc236a14e81d2b628f1766e1e32fb


보통의 그림자 즉 Shadow=Umbra+Peumbra 로 구성됨


일반적으로 정적인 그림자는 베이킹해서 그리는데, 옛날 게임에 캐릭터보면 텍스쳐에 음영을 넣는 효과들이 그러함


일반적으로 게임에서 실시간으로 렌더링하는 그림자는 크게 4가지로 나뉘더라


1. 쉐도우 맵(현 대세)


1번 쉐도우 맵 같은 경우 현재 가장 널리 쓰이는 방법인데, 기본적으로 2가지 단계가 필요함


1. 광원에서 빛의 방향을 바라보는 라이트 스페이스가 있고, 그런 다음 라이트 스페이스에서 그림자를 생성해야하는 객체를 렌더링함

여기서 그림자를 생성하는 객체를 렌더링하고, 이때 깊이(뎁스)를 Z-Buffer에 기록되어 가장 가까운 객체의 깊이를 저장하는 ShadowMap을 얻음


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce980fa11d028318bcc964a2550adfe9a320f1577eddb96740dbf1ab09b19e9877dcda13bf2d685fa8f4933faf1b3bfc82ca6f92c731eb60dbb8b4c




(윈도우 APP 디벨롭에 적혀있는 Shadow Depth Maps 원리)



22a8c868f5dc3f8650bbd58b3687716ca463

2단계: 그런 다음 객체를 다시 정상적으로 렌더링합함

렌더링하는 동안 렌더링된 객체의 월드 좌표에 따라 이전 단계의 조명 공간 좌표로 변환한 다음 Shadowmap에서 해당 지점의 깊이 값을 계산하여 비교.

상대 광원의 경우 거리가 섀도우맵의 깊이보다 크면 해당 점이 그림자 안에 있다는 의미이고, 그렇지 않으면 그림자 안에 있지 않다는 의미로 됨



문제는 라이트 스페이스의 절두체(frustum)의 계산효과는 쉐도우맵의 해상도와 Z-Buffer의 정확도에 따라 달라지고

일반적으로 Shadow 맵의 정확성을 향상 시킬려고함


일반적으로 월드 공간 뷰의 절두체의 8개 정점을 라이트 스페이스로 변환하고, 조명공간에서 가장 먼 Z값과 가장 가까운 Z값을

AABB경계로 계산함. 문제는 이렇게 할 경우 카메라 뷰 절두체(절두체라고 하면 이상한데)


최대 근접/최대 거리 평면에서 그림자 설정을 함.



22a5d868efc23f8650bbd58b3687766eb79a


보통 이게 올바른 쉐도우


24aec768f5dc3f8650bbd58b368676647e

그러고나면 쉐도우맵을 개선하기위해 그림자 편향(Shadow Bias)을 함.

일반적으로 셀프 쉐도잉은 쉐도우 뾰루지(Shadow acne)를 유발할 수 있음 이를 보정하기위해서

슬로프 스케일 뎁스 바이어스를 함.


왜 이런 문제가 생기냐면 쉐도우 맵을 쓸때 쉐도우 맵 픽셀의 중심점을 지점으로 뎁스값을 계산하기 때문인데,

이때 조명방향을 따라 깊이 값을 오프셋(변위차)를 줌. 그리고 이걸 보통 바이어스라고 함


보통의 Slop Bias 오프셋 계산 공식은


(절두체의 크기 *tan(세타))/(쉐도우맵사이즈*2)


나눔 이걸 보면 알다시피 결국 오프셋 값은 탄젠트에 가까워지고, 세타가 90도에 가까워질수록 값이 무한해지기때문에 일반적으로 오프셋에 한계를 둠


이때문에 보통 2개의 오프셋 쓰거나 아니면


(절두체의 크기 *sin(세타))/(쉐도우맵사이즈*2)

을 씀. 이럴 경우 세타가 90도가 되도 값이 무한해질 수가 없음


보통 언리얼엔진에서는 상수 바이어스+슬로프 스케일 뎁스 바이어스가 쓰임


유니티에서는 상수 바이어스+노멀 오프셋 바이어스가 쓰이고,


참고로 이 바이어스 값에 따라서 피터 패닝이라고 불리는 현상이 일어나기 때문에 조심해야함


어쨌건 최근의 기술흐름은 이러한 쉐도우 맵을 보완하기 위해서 여러기술이 사용됨


CSM,PCF,PCS,모듈화된 쉐도우,VSM 등등


CSM은 쉐도우 맵을 정확도를 향상시키는데, 일반적으로 병렬-분할 쉐도우 맵이라고도 함 (Parallel split Shadow Map)

일반적으로 시야각 근처의 객체 렌더링할때 쉐도우 맵의 화질을 높일 필요가 있는데, 절두체를 여러부분으로 나누어서 별도의 쉐도우 맵을 생성 후, 최종적으로 아틀라스로 결합하는 방식임.


근데 결국 이 일련의 흐름을 따라가기에는 아무리 봐도 인디 계열에서는 무리라고 생각해서 흐름 자체가 있다는 정도만 기억함



2. 쉐도우 볼륨


22a8c368f5dc3f8650bbd58b3680716867b4


보통 스텐실 버퍼를 쓴다고 하면 나오는거


기본적으로 ZPass 알고리즘, ZFail 알고리즘이 있음


3da5c568f5dc3f8650bbd58b3689716587


22a8c335f69c28a8699fe8b115ef046b00f4359c



ZPass는

스텐실 버퍼를 사용해서, 실제 위치를 그림자로 표기하고, Z-Test를 켠 후 스텐실 모드의 앞을 1 뒤를 -1로 함

이렇게 설정해서 렌더링이 완료될 경우 스텐실 버퍼가 0인 부분은 그림자가 없고, 0이 아닌 부분은 그림자가 있음

문제는 ZPass는 카메라가 섀도우 볼륨 안쪽에 있을때 문제가 발생함


그래서 대안으로


3ab8d221e9ed2bb26bb1d5bc1a826a2d153a7a84eb5e876b3b47376ff3


ZFail이 나옴

차이점은 Z-Test 실패 알고리즘이 -1 이라는거.


섀도우 볼륨은 다각형 매쉬를 생성 후,

Front Capping-> Back Capping ->Silhouette


의 과정을 거침


전면 캡핑은 모델의 surface을 파악하고, 법선과 광원 방향의 곱에 대해서 양수냐 음수냐로 방향 판단 하고


백 캡핑은 모델의 surface가 광원의 반대 방향을 향하게 한 후, 광원 방향으로 무한대로 늘림


실루엣은 인접한 2개의 Surface가 광원으로부터 방향이 같은지 여부를 결정함



3. 직접 붙인 그림자


그냥 말그대로 캐릭터에 그림자를 붙이는데, 현재 내가 생각하고 있는 방식임. 이 방식의 장점은 압도적으로 연산량을 줄일 수 있음.



4. 투사 그림자(프로젝션 쉐도우, 평면 그림자라고도 불림)


유니티에서 2D Cahsting Shadow 같은게 여기에 속함

보통 물리학에서 광학 배우면 주로 배울 기술들


모바일에서 주로 사용되는 기법 중 하나인데


26a8c93ff19c3faf689fe8b115ef046ca466a601


주로 MVP 매트릭스라고도 함 Model - View - Projection


사실 쉐이딩 할떄 가장 많이 쓰이는게 이거 같긴함




38b99e36ebd518986abce89545887565a1


7fa8d468f5dc3f8650bbd58b36837369b9c8


간단하게 V 지점에서 P지점으로 매핑한다


27b6c968f5dc3f8650bbd58b3683726a6f

이게 이식이 뜻하는 바이고,


P=mv 즉 MVP행렬로 만들면


M=4x4 matrix로 짤의 형태로 나오는거.


22a8c821abc236a14e81d2b628f1736cf5f13f

실제로 만들어서 써본것.

새삼 생각해보면 게임 엔진이 참 잘만들었단 생각을 한다


나는 저거 그냥 저런게 있구나 이해하지 만들라면 못만들듯.



출처: 인디 게임 개발 갤러리 [원본 보기]

추천 비추천

58

고정닉 18

13

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 주위의 유혹에 쉽게 마음이 흔들릴 것 같은 스타는? 운영자 24/10/21 - -
266941
썸네일
[야갤] "이달 월급, 다음달에 준다니…" 필리핀 가사관리사 2명 이탈
[224]
ㅇㅇ갤로그로 이동합니다. 09.23 16642 88
266940
썸네일
[주갤] '결혼 안한게 아니라 못했다'는 댓글에 반응한 여자유튜버
[588]
주갤러(104.254) 09.23 30404 357
266937
썸네일
[토갤] 월 700 버는 울릉도 쿠팡맨
[357]
모미아냐갤로그로 이동합니다. 09.23 33624 186
266936
썸네일
[야갤] "의사 아닌 줄 알았다"…상상도 못한 블랙리스트 작성법
[286]
마스널갤로그로 이동합니다. 09.23 22693 338
266935
썸네일
[싱갤] 김성주가 MBC 아나운서에 합격한 이유
[207]
예도리갤로그로 이동합니다. 09.23 29876 260
266933
썸네일
[탈갤] '투숙비 갈등에 앙심' 40대 남성, 여관에 불 질러 투숙객 전원 사망
[171]
DUKE NUKEM갤로그로 이동합니다. 09.23 14789 135
266932
썸네일
[싱갤] 오싹오싹 사랑니갤러리
[357]
ㅇㅇ갤로그로 이동합니다. 09.23 32004 161
266931
썸네일
[미갤] 인도의 삼성공장 시위 근황.jpg
[387]
ㅇㅇ(211.234) 09.23 29125 296
266928
썸네일
[엘갤] 어제 있었던 CGV 용산 봇치더락 응원상영회 논란
[358]
돌비시네마갤로그로 이동합니다. 09.23 25031 170
266927
썸네일
[싱갤] 싱글벙글 혐한제조기...jpg
[775]
ㅇㅇ갤로그로 이동합니다. 09.23 49860 462
266924
썸네일
[싱갤] ㅅㅂㅅㅂ 또 한바탕 해처먹으려는 서울시 빌드업
[344]
ㅇㅇ갤로그로 이동합니다. 09.23 44571 591
266923
썸네일
[주갤] 20후 여자인데 퇴사하고 3년 해외경험 하고싶다는 블라인.jpg
[553]
주갤러(104.223) 09.23 43937 222
266921
썸네일
[야갤] "판매자랑 알아서 합의하라고"...믿고 쓴 앱에서 '뒤통수'
[93]
마스널갤로그로 이동합니다. 09.23 21157 43
266920
썸네일
[싱갤] 매운음식 먹고 썰푸는 일본곰
[148]
뇽댬굠갤로그로 이동합니다. 09.23 23173 107
266919
썸네일
[부갤] 슈카코믹스) 석유 가격은 왜 자꾸 오르는걸까?
[161]
부갤러(211.234) 09.23 16982 92
266917
썸네일
[유갤] 후지노미야~고암 캠핑장 후기
[28]
이베르카나갤로그로 이동합니다. 09.23 5903 20
266916
썸네일
[야갤] ‘530㎜ 가을 물폭탄’ 퍼붓는데… 비 예보, 4년 전보다 뒷걸음질
[111]
ㅇㅇ갤로그로 이동합니다. 09.23 14631 65
266915
썸네일
[싱갤] 싱글벙글 노홍철이 폭소한 빠니와 곽튜브 연애이야기..jpg
[422]
최강한화이글스팬갤로그로 이동합니다. 09.23 48860 494
266912
썸네일
[싱갤] 싱글벙글 네이버 신작 웹툰.....지원군 등장.....jpg
[391]
우하하날사랑해줘요갤로그로 이동합니다. 09.23 53990 357
266911
썸네일
[야갤] "당장 하이닉스·삼성전자 팔아야"...수상한 '저승사자' 등장에 휘청
[215]
ㅇㅇ갤로그로 이동합니다. 09.23 28638 118
266909
썸네일
[코갤] [단독] "개·고양이 키우면 세금 내라"…'반려동물 보유세' 검토
[857]
ㅇㅇ갤로그로 이동합니다. 09.23 21645 543
266908
썸네일
[싱갤] 싱글벙글 백종원 요리 서바이벌에서 최초 등장한 비건 요리 합격자.jpg
[234]
수인갤러리갤로그로 이동합니다. 09.23 25561 153
266907
썸네일
[기갤] 엄친아 드라마 대사 논란 ㅋㅋ
[266]
ㅇㅇ(39.7) 09.23 25031 37
266905
썸네일
[야갤] “복무부적합 조기 전역 병사…최근 5년간 2만5532명”
[327]
ㅇㅇ갤로그로 이동합니다. 09.23 16411 87
266904
썸네일
[싱갤] 싱글벙글 각 문명권이 인류에 기여한것
[511]
ㅇㅅㅇ갤로그로 이동합니다. 09.23 36728 239
266903
썸네일
[중갤] 드래곤볼 게임계의 이단아에 대해 알아보자
[46]
언성을높이지마라갤로그로 이동합니다. 09.23 15340 40
266901
썸네일
[싱갤] "아까 욕했던 새끼들 누구냐?"
[233]
ㅇㅇ(222.114) 09.23 43207 246
266899
썸네일
[야갤] '초고가' 거래 3배 급증..서울 아파트 양극화 심화
[178]
ㅇㅇ갤로그로 이동합니다. 09.23 13723 64
266897
썸네일
[중갤] 명태균, 김영선에 건넨 6천만원 "빌려준 돈 돌려받은 것" 반박
[41]
ㅇㅇ갤로그로 이동합니다. 09.23 8373 41
266896
썸네일
[싱갤] 싱글벙글 침착맨 결혼식 사건 총정리..JPG
[746]
ㅇㅇ(119.65) 09.23 79410 977
266895
썸네일
[해갤] 엔시티 빠순이들한테 욕먹은 양현종
[161]
ㅇㅇ(39.7) 09.23 20387 197
266893
썸네일
[싱갤] 싱글벙글 그 시절 미쳐버린 금리
[219]
ㅇㅇ갤로그로 이동합니다. 09.23 20734 80
266892
썸네일
[야갤] 라이더는 못 가는 길...하늘로 배달 가는 'K-드론'
[173]
마스널갤로그로 이동합니다. 09.23 12597 37
266891
썸네일
[토갤] [블루아카이브] 텐도 아리스 레진키트 도색기
[72]
개구리나무갤로그로 이동합니다. 09.23 8270 51
266889
썸네일
[싱갤] 싱글벙글 술담배 하는데 건강한 노인들...
[322]
케넨천재갤로그로 이동합니다. 09.23 26099 222
266888
썸네일
[야갤] “잘라야 합니다”…중요 부위에 ‘필러’ 맞은男, 결국 80% 절단
[379]
ㅇㅇ갤로그로 이동합니다. 09.23 26965 229
266886
썸네일
[싱갤] 싱글벙글 음주전과자 명단
[314]
ㅇㅇ갤로그로 이동합니다. 09.23 38948 402
266883
썸네일
[유갤] 경상도 캠핑장 4군데 야영 후기 (씹스압)
[36]
댕댕이애호가갤로그로 이동합니다. 09.23 9487 44
266881
썸네일
[싱갤] 싱글벙글 알바 짤리기 타임어택
[356]
페코미코멧갤로그로 이동합니다. 09.23 31246 220
266879
썸네일
[히갤] DC 신작드라마<더 펭귄>근황....jpg
[180]
ㅇㅇ(175.119) 09.23 21231 107
266878
썸네일
[취갤] 공대 취업의 현실에대해 알아보자 (지방유배, 블루칼라)
[491]
ㅇㅇ(49.143) 09.23 28296 147
266876
썸네일
[싱갤] 싱글벙글 국가별 인스타 팔로워수 순위
[372]
코닭갤로그로 이동합니다. 09.23 29488 135
266874
썸네일
[디갤] 여기저기서 찍은 사진들봐라 많아..
[17]
ㅁㅂㅎㄹ갤로그로 이동합니다. 09.23 7062 12
266873
썸네일
[게갤] 단순 수리에서 개노가다로 바뀐 상황
[51]
Raccoonman갤로그로 이동합니다. 09.23 24074 41
266871
썸네일
[싱갤] 알쏭달쏭 은근 아직까지도 밝혀지지 않은거
[584]
글레이시아는수컷87.5%갤로그로 이동합니다. 09.23 49288 188
266869
썸네일
[흑갤] 강레오 심사평 레전드 (feat. 최강록). jpg
[287]
ㅇㅇ(121.180) 09.23 52255 802
266868
썸네일
[해갤] 씹레전드 조슈아의 복싱 일대기....jpg
[87]
해복갤러(121.157) 09.23 15432 176
266866
썸네일
[싱갤] 식당 맘충 베스트4 (혈압주의)
[188]
ㅇㅇ(218.39) 09.23 19191 146
266864
썸네일
[중갤] "진짜 겜알못"들이 가진 특징 3가지...jpg
[678]
ㅇㅇ(58.127) 09.23 39499 395
266861
썸네일
[카연] 혼밥하는 호랑이님 3화
[26]
석효이갤로그로 이동합니다. 09.23 7580 22
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2