2. Lighting of Killzone : Shadow Fall은
Guerrilla Games의 Michal Drobot이 2013년 발표한 자료
스터디 발표를 위해 적어놓은 메모를 같이 올립니다
잃어버려서 빠진 내용도 있고, 틀린 내용이 있을지도 모르지만 적당히!
원본은 여기로
http://www.slideshare.net/guerrillagames/lighting-of-killzone-shadow-fall
본 강연
http://www.youtube.com/watch?v=_29M8F-sRsU
4. DICE의 테크 디렉터인 Johan Andersson의 SIGGRAPH 2012 발표
향후 5~10년간 해결해야 하는, 이슈화 될 만한 주제들로 다섯가지를 뽑았다
1. anti aliasing
2. 효율적인 조명
3. cpu와 gpu의 효율적인 사용
4. 비용을 효율적으로
5. 더 크고 세부적인 퀄리티, 저전력
5. 더 이상 단순 폴리곤 증가로 시각적인 효과를 얻을 수 없기 때문
킬존 쉐도우폴의 발표자료를 보니 비슷한 고민에서 접근,
그래서 발표합니다
11. PS4 사양은 8 CORE CPU, 4 GB RAM
PS3와 다르게 PC 친화적인 구조
디버거등 개발도구들은 이미 구비되어 있었음
PS4 30% 정도 사양으로 개발(1.5 RAM 사용?)
거의 대부분의 코드는 멀티스레딩, 30FPS 고정
12. 킬존3 10,000 Polygon 1024 x 1024
쉐도우폴 약 4배, 4만 다각형
몸에 사용되는 텍스쳐는 2048 * 2048 6장
detail map + head textures
프로그램이 정말 쉽고 gpu가 정말 빠르다
13. HDR Lighting이나 파티클을 제한적으로 사용하는게 아니라
모두 조합해 한 화면에 사용
Nvidia's FXAA를 사용
MSAA가 더 큰 메모리를 차지해서 그런지 이쪽 언급은 없다
그러나 소니측에서 개발중인 TMAA라는 향상된 안티 앨리어싱을 준비중
14. 디퍼드 쉐이딩 사용
전체 파이프 라인은 HDR 및 선형 공간 사용 물리적으로 올바른 라이팅 모델 로 전환
보존 에너지, 계산 기하 감쇠 계수
모든 개체에 투명감과 프레넬 효과 지원
모든 빛은 지역 빛이다, Volumetrics 마다 빛 지원
실시간 반사와 지역화 반사 큐브 맵, 실시간 조명과 일치하는 적절한 빛의 양 계산
15.
16.
17.
18.
19. 물리적 기반 조명으로 사실적인 화면을 쉽게 얻기
HDR 환경에서 일관성
아티스트들이 간단히 재질
간단한 문제 해결 및 확장
20.
21. 기본 색상은 모든 방향에서 빛을 통합해서 수신
스팩큘러를 위한 빛은 한방향에서 온다
22. 이미지 기반 조명 ( IBL )은
일반적으로 특수 카메라를 사용하여
이미지로 현실 세계의 빛 정보의 방향성 표현을 캡처, 포함하는 3D 렌더링 기술
48. 단순화된 거칠기 텍스처
얇고 오래된 페인트 , 긁힌 곳은 철을 보여준다, 때문에 풍화 효과를 부드럽게 R = 고
순수한 녹 : R = 매우 낮은
녹슨 금속 : R = 금속의 느낌과 광택을 반반 해서 섞어 표현
총알 구멍 : 고온에서 변화된 철( 충격 에너지 에 의한 ) : R = 매우 높은
순수 오래된 페인트 : R = 중간
49. 간단한 스펙큘러 반사 텍스처
얇고 오래된 페인트는 긁힌 부분에 철이 드러난다 SR = 낮은 철
녹, 비 금속 : SR = 저 , 비 금속
녹슨 금속 : SR = 보통 , 비 금속, 낮은 철 의 반짝임
철에 생긴 총알 구멍 : SR = 철
순수 페인트 SR = 낮음, 보통 , 높음 아닌 금속 ,
페인트 종류에 따라 다름, 이전 페인트 = 저, 새 페인트 = 중간 / 높음
50. 간단한 알베도 텍스처
흰색의 오래된 페인트 , 긁힌 곳은 아래철 을 보여준다 A = 어두운 회색(금속을 보여준다 )
순수한 녹 : A = 오래된 콘크리트 안의 녹
철에 생긴 총알 구멍 : A = 매우 어둡게( 금속)
흰색 오래된 페인트 : A = 콘크리트의 알베도 범위에서 흰색 ( 밝은 회색 )
51. BRDF 사용
* 쿡토렌스 조명 모델을 기본 베이스(금속 표면을 표현하는데 적합한 조명 모델)
프레넬, 쉬릭스 근사(Schlick’s approximation)
프레넬 항이 약간 틀리더라도 차이 없으므로 근사값 사용
float3 refindex = { 0.85f, 1.0f, 1.0f };
float F = lerp( pow(1 - NV, 5), 1, refindex);
* 정반사율을 정규화해 사용, 원뿔 형태의 각도에서 거칠기가 중요하다
* 거의 정확한 근사치의 투명화, 밀도도 사용, 반투명 산란 맵