디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅆㅇㅆ(124.216) 2024.07.05 09:30:02
조회 14957 추천 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
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 과음으로 응급실에 가장 많이 갔을 것 같은 스타는? 운영자 25/03/03 - -
297255
썸네일
[부갤] 울산 자영업 빚더미 최악의 상황 | 최고의 상권도 무너져
[346]
후우가갤로그로 이동합니다. 01.14 27148 111
297253
썸네일
[러갤] 30살이 되어 쓰는 20대의 체형변화와 운동(살색 주의)
[197]
베토나무상갤로그로 이동합니다. 01.14 48619 137
297251
썸네일
[냥갤] ㄱㄷ) 고양이를 구조했는데 80 썼어요ㅠㅠ
[133]
ㅇㅇ(106.101) 01.14 26475 141
297249
썸네일
[주갤] (블라) 말을 엿같이하는 퐁퐁부인에 빡친 퐁퐁햄 ㅋㅋ
[498]
블라탐험가페페갤로그로 이동합니다. 01.14 36977 468
297247
썸네일
[싱갤] 와들와들 방송용 대본이어야 하는 광고회사 폐급 신입 썰.jpg
[243]
BlackWolfStudio갤로그로 이동합니다. 01.14 41896 223
297245
썸네일
[잡갤] 새끼가 사라지고 뒷산을 떠나지 못하던 다리 하나 없는 어미 누렁이
[72]
감돌갤로그로 이동합니다. 01.14 20844 104
297243
썸네일
[야갤] ㅓㅜㅑ 중국 공안 출신 조선족이 말하는 지금 탄핵사태
[481]
ㅇㅇ(49.169) 01.14 49157 1441
297239
썸네일
[키갤] 김혜성 출국 인터뷰 전문.gisa
[40]
ㅇㅇ(118.235) 01.14 17725 87
297237
썸네일
[정갤] 이탈리아 셰프한테 미트볼 스파게티를 시키면 일어나는 일
[119]
대한민국인디언갤로그로 이동합니다. 01.14 29528 140
297235
썸네일
[싱갤] 싱글벙글 "그 대학" 최신 근황이긔
[220]
수수수갤로그로 이동합니다. 01.14 37647 65
297233
썸네일
[탈갤] 실미도 그알에서도 방송 했었구나
[390]
가우스갤로그로 이동합니다. 01.14 23346 113
297230
썸네일
[이갤] 페이커 vs 윈터 (feat.나폴리맛피아)
[110]
ㅇㅇ(104.223) 01.14 28321 45
297227
썸네일
[유갤] 한국인들이 유럽 도박판에서 돈을 못 따는 이유
[168]
ㅇㅇ(185.236) 01.14 34994 89
297224
썸네일
[싱갤] 싱글벙글 중국의 사형 집행 방식.jpg
[269]
최강한화이글스팬갤로그로 이동합니다. 01.14 35350 184
297221
썸네일
[주갤] 거짓말치고 몰래 휴가써서 코인노래방 가는 남편
[450]
ㅇㅇ(106.101) 01.14 37439 231
297218
썸네일
[잡갤] [전당포 사나이들] 스압 / 희귀 오류 고오스 카드 ㅍㅍㅍㅍ
[42]
츄모몽갤로그로 이동합니다. 01.14 9991 15
297215
썸네일
[야갤] 페미니즘은 오히려 여자에게 불리함을 줬다...jpg
[447]
앤드류테이트갤로그로 이동합니다. 01.14 39212 690
297210
썸네일
[야갤] 속보)) 55경비단, 공조본 \'대통령 체포팀\' 관저 출입 허가
[313]
라면타도갤로그로 이동합니다. 01.14 25851 277
297203
썸네일
[싱갤] 싱글벙글 중국에서만 가능한 시상식 소감.jpg
[209]
ㅇㅇ(121.161) 01.14 48503 75
297200
썸네일
[새갤] 황교안때도 저런식으로 미화하는 그림 있었는데
[147]
모스크바의밤갤로그로 이동합니다. 01.14 28412 143
297198
썸네일
[이갤] 내란공범 김용현에 월 500만원 군인연금 지급 파문
[348]
세티르갤로그로 이동합니다. 01.14 22628 96
297196
썸네일
[싱갤] 싱글벙글 북한에선 국수로 만들어 먹는 것....jpg
[302]
ㅇㅇ갤로그로 이동합니다. 01.14 56528 320
297195
썸네일
[잡갤] 동덕여대, 단순 하교하던 학생까지 '너 시위했지' 진술서 제출
[256]
츄모몽갤로그로 이동합니다. 01.14 36615 298
297192
썸네일
[서갤] 지방러의 첫 부코 양일 후기!
[63]
코카콜라0508갤로그로 이동합니다. 01.14 15698 28
297190
썸네일
[야갤] 김동현 체육관에서 대결 진게 억울해서 흉기 들고 온 관원
[101]
ㅇㅇ(106.101) 01.14 26888 67
297188
썸네일
[싱갤] 싱글벙글 가장 과학적인 배변 자세.jpg
[310]
최강한화이글스팬갤로그로 이동합니다. 01.14 50604 251
297186
썸네일
[카연] 강한 여성들에게 시달리는 만화 01
[124]
카갤러(121.142) 01.14 23608 211
297184
썸네일
[부갤] 21세기 마녀사냥 파푸아뉴기니 상구마 살해주술
[86]
후우가갤로그로 이동합니다. 01.14 16707 48
297180
썸네일
[유갤] '하얼빈' 현빈이 안중근 의사에게 하고 싶은 말
[358]
ㅇㅇ(175.119) 01.14 19824 60
297176
썸네일
[국갤] 윤카 정책 다 지워지는 중
[794]
ㅇㅇ갤로그로 이동합니다. 01.14 59988 1768
297174
썸네일
[기갤] 미국 10대 20대 사이에서 유행하는 패션 이야기
[245]
ㅇㅇ(106.101) 01.14 40703 135
297172
썸네일
[야갤] 운전자 없는 트럭 관광버스 때문에.. 공포의 도로
[88]
후우가갤로그로 이동합니다. 01.14 19576 77
297170
썸네일
[싱갤] 47년동안 오른팔을 내리지 않는 남자.JPG
[311]
ㅇㅇ (39.112) 01.14 43093 84
297168
썸네일
[부갤] 모텔 같은 원룸 살 수 있다 없다
[196]
부갤러(211.234) 01.14 41051 98
297167
썸네일
[대갤] 일본의 종말 '난카이 대지진' 올해 당장 일어나도 이상하지 않아
[305]
난징대파티갤로그로 이동합니다. 01.14 26739 369
297162
썸네일
[국갤] 경찰, '윤 대통령 체포 영장 집행' 관련 소집 명령
[279]
ㅇㅇ(115.91) 01.14 21754 527
297160
썸네일
[밴갤] 벗방채널 운영 20대 검거…텔레그램 돌변에 초긴장
[227]
ㅇㅇ(58.234) 01.14 34448 105
297158
썸네일
[이갤] 여성 유투버가 이사한지 10일만에 집을 내놓은 사연..
[463]
슈붕이(89.41) 01.14 43386 105
297156
썸네일
[싱갤] 오싹오싹 통 속의 뇌의 실현인가? 죽은 인터넷 이론
[267]
ㅇㅇ갤로그로 이동합니다. 01.14 35787 205
297154
썸네일
[국갤] 갓종배- 정계선 재판관 고발
[150]
STS갤로그로 이동합니다. 01.14 16240 672
297152
썸네일
[러갤] 보수 우파녀의 울분..0원으로 뭘 하란 말이냐?
[577]
배터리형갤로그로 이동합니다. 01.14 34209 931
297150
썸네일
[밴갤] 미친 광고 수준;;
[660]
ㅇㅇ(211.235) 01.14 47567 528
297148
썸네일
[싱갤] 싱글벙글 메뉴얼 CAD
[122]
ㅇㅇ갤로그로 이동합니다. 01.14 17199 106
297146
썸네일
[디갤] X100VI 영하 12도 필드 테스트...WEBP
[21]
하늘섬에간폐관수련파계승예아안될거뭐있노갤로그로 이동합니다. 01.14 9489 11
297142
썸네일
[해갤] 제주 항공 사고로 지방 공항들 정비에 들어가는 국토부
[240]
해갤러(198.44) 01.14 20974 128
297140
썸네일
[싱갤] 훌쩍훌쩍 서울대 누나가 말하는 개발자가 ㅈ같은 이유
[402]
미나늘갤로그로 이동합니다. 01.14 51522 96
297138
썸네일
[대갤] 반찬 살 돈도 없는 가난한 日, 빈곤한 서민들에게 후리카케 대유행!
[586]
난징대파티갤로그로 이동합니다. 01.14 30877 368
297136
썸네일
[국갤] (블라인드) 현재 경찰 내부 여론.jpg
[334]
ㅇㅇ(49.168) 01.14 50303 1590
297134
썸네일
[야갤] 전문가 한마디에 '발칵'…전국 부모들 '멘붕' 온 이유가
[109]
마스널갤로그로 이동합니다. 01.14 29832 45
297132
썸네일
[싱갤] 싱글벙글 아시아인의 모자를 강탈하는 서양 어린이 .jpg
[151]
최강한화이글스팬갤로그로 이동합니다. 01.14 38984 264
뉴스 '러브 웨이브' 강도윤, 동해안 럭셔리 서핑샵의 외동 아들 신수호로 합류! 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2