SlideShare ist ein Scribd-Unternehmen logo
1 von 110
제노블레이도 2
레이 행진을
사용한 구름 표현
제노부레이도 2 :(C) 2018 Nintendo / MONOLITHSOFT
https://cedil.cesa.or.jp/cedil_sessions/view/1919
운해(구름)에 덮인 세계관
운해 표현(구름 바다)
운해 표현에 해당 할 항목
1. 파형 형태
2. 모양은 실시간 변화
3. 반투명 표현
운해의 표현 방법
1. 그리드 기반의 폴리곤에 의한 구름 표현
2. 파티클 기반 의한 구름표현
그리드 기반의 다각형
●균일하게 정점을 배치 한 다각형
●실시간으로 정점을 이동
• 파형 모양을 표현
• 바다(물) 표현 등에 사용되는 기법활용
반투명 표현의 문제
관점과 교차하는 폴리곤이 복수 존재
구름이 파형형상으로 변경되었을 때,
관측방향과 방향을 교차하는 다각형이 여러 개 있을 때 문제가 발생
반투명 정렬 문제
●폴리곤 단위로 정렬하지 않으면 재대로 안나옴
●폴리곤 단위로 정렬 GPU, CPU 부하가 높음
문제가없는 외형 문제가있는 외형
파티클에 의한 문제
대량의 파티클 배치 따라서 표현
구름바다를 표현할 때는 다량의 입자를 배치하지 않으면 표현할 수 없음
파티클에 의한 문제
●대량의 입자를 표시
●CPU와 GPU함께 부하가 매우 높아진다
RAY MARCHING 에서 해결할 수 있다면?
RAY MARCHING은?
●빛 (ray)를 행진 (march)시켜 제어하는 방법
• 로컬 리플렉션, SSAO, 포스트 이펙트에 사용
• 지정된 픽셀 위치에서 좌표를 찾고, 특정 벡터 방향 또는 광선을 건너뛰고, 장면에서 정보
를 선택하여 제어
RAY MARCHING 에 따른 구의 모델링
1. 카메라에서 레이 비행
2. 레이와 접촉하는 장면에서 정보를 얻음
3. 그 결과를 바탕으로 모델링 함
RAY MARCHING 에 따른 구의 모델링
●구의 모델링에 필요한 정보
⮚ 구 의 반경
⮚ 구 의 좌표
⮚ 구 의 기본 색상
⮚카메라
RAY MARCHING 에 따른 구의 모델링
1. 전체 화면 그리기
2. 픽셀 위치의 레이(관측점 벡터)요청
3. 관점위치레이, 구의 위치, 구의 반경에서 접촉 위치를 계산
4. 접촉 위치에서 색상 노멀 깊이를G-Buffer출력
최종 결과G-Buffer
RAY MARCHING 에 따른 구의 모델링
라이팅
정리
●다각형에 의한 방법이 아니라도 모델링 가능
• ray marching 기술을 응용 한 운해를 표현
운해
운해의 모델링
●운해는 파형 형태하고 싶다.
●이 모양을 어떻게 계산합니까?
●구을 대량으로 배치하는 방법은 부하가 높기 때문에 피하자
●보기 좋기 때문에 많은 구을 배치하는 표현
목표로하고 운해의 형
PERLIN-WORLEYNOISE사용
●PerlinNoise+ Worley Noise를 합성 한 것
WORLEY NOISE이란?
• 스티븐 월리(Steven Worley)에 의해 개발 된 노이즈
●물, 돌 등으로 노이즈 정보로 사용
●구름의 표현이 자주 사용
PERLIN NOISE이란?
• 켄 펄린(Ken Perlin)에 의해 개발 된 노이즈
●불꽃, 연기의 표현 등 자주 게임 등에서 사용
PERLIN,WORLEY를 합성하여 사용
PERLIN-WORLEYNOISE데이터
• 3D 텍스처에 정보를 저장
• 해상도로 128* 128 * 128
• 해상도가 높을수록 품질이 높아지지만 텍스처 샘플링 부하, 용량 문제
x
y
z
운해의 모델링
레이 발사
운해의 모델링
• 일정한 공간 분할
• 분할된 빨간색 부분에 대한 계산을
수행
운해의 모델링
운해의 가장 높은 지점보다 아래 인 경우 모델링
운해의 모델링
운해의 농도 = CLAMP ((운해의 최고점-레이의 위치) /운해의 깊이0,1 )
운해의 깊이
레이의 위치
최고점
아래로 갈수록 어두워지게..
운해의 모델링
투명도가 0(영)이상은 운해 제어
CLAMP ((( X 운해의 농도) 자 보정 값 ) 곱셈 값0,1)투명도= X
라이팅
●입체감을 내기 위해 조명이 필요
●운해는 법선 정보가 존재하지 않음
●노말(법선)을 사용하지 않고 라이팅
라이팅
라이팅 있음 라이팅 없음
라이팅
( lerp , 투명도, )운해 =
레이 검사 위치
투명도
= 투명도가 높은 라이팅 결과
= 투명도가 낮은 라이팅 결과
운해의 사전 라이팅
• 가장 투명도가 높은 운해의 기본 색상,
가장 투명도가 낮은운해의 기본 색상이 존재
• 두가지 유형에 대한 조명 계산 수행
• 조명의 감쇠는 투명도를 고려
• 잘리지 않는 정보로 투명도가 높은 부분이 밝아짐
• 투명도가 낮은 부분은 운해로 차단되어 어두워지는 경향이 있음
• 조명의 계산을 위한 모델은 생략
투명도 거리의 차이
투명도를 얻을 때 광선 수를 늘리는 것이 가장 좋다 하지만 부하가 큼
구름이 바다처럼 보임
● Perlin-Worley Noise만으로는 단단한 운해
●PerlinNoise추가
●운해의 투명도Noise결과를 곱
●3D 텍스처에PerlinNoise저장
●128*128 *128해상도
노이즈 계산을 추가한 연기
추가 노이즈 없음 추가 노이즈 있음
노이즈의 결과가 자주 반복
●해상도를 올리면 좀더 구름처럼 가능
●128^3 2M
●256^3 16M
●512^3 128M
●해상도를 올릴 용량이 증가
●텍스처 크기의 증가에 의한 샘플링의 부하 증대
VALUE NOISE
●난수 정보를 바탕으로 계산하는 노이즈
• 아주 간단한 노이즈 계산
• Perlin 노이즈보다 품질이 낮지만 더 빠르게 계산
Perlin Noise Value Noise
VALUE NOISE
●2D 텍스처에 난수 정보를 저장
●256 * 256의 해상도
●랜덤 텍스처
VALUE NOISE
• 4 개의 난수 정보를 얻을
• 선형 보간 연산
• GPU의 경우 텍스처 샘플링으로 끝난다
• GPU에 매우 친화적인 노이즈 계산
텍스처 참조는 일반 컨트롤보다 훨씬 빠른 하드웨어에서 선형 완료 계산을 수행
노이즈의 쉐이더
float noise (in vec3 x)
{
vec3 f = fract(x); // 소수
// Hermine Curve
f = f * f * (3.0-2.0 * f);
vec3 p = floor (x); // 정수
// UV계산
vec2 uv = (((p.xy + noiseOffset.xy * pz) + f.xy) +0.5) /256.0;
vec2 rg = texture ( texNoise , uv ).xy;
return lerp ( rg.x, rg.y, fz );
}
노이즈의 쉐이더
float noise (in vec3 x )
{
...
• 인수x 샘플링 위치
• 레이 검사 좌표를 가공 한 수치
노이즈의 쉐이더
float noise (in vec3 x)
{
vec3 f = fract(x); // 작은 숫자를 가져
// Hermine Curve
f = f * f * (3.0-2.0 * f);
• 소수 값을 추출하고 Hermite곡선 가공
UV 값의 가공에 대하여
• UV값을 자연적인 보완을 위해 Hermite곡선
• Hermit 곡선의 주된 이유는 매끄러운 보완을 수행하기 위한 것
선형UV값 Hermite곡선UV값
노이즈의 쉐이더
float noise (in vec3 x)
{
vec3 f = fract(x); // 작은 숫자를 가져
// Hermine Curve
f = f * f * (3.0-2.0 * f);
vec3 p = floor (x); // 정수 값을 얻을
// UV계산
vec2 uv = ((p.xy +f.xy) +0.5) /256.0;
return texture (texNoise, uv) .x;
}
• Z축 고려되지 않은 쉐이더
노이즈의 쉐이더
// UV계산
vec2 uv = ((p.xy +f.xy +p.zz +f.zz) +0.5) /256.0;
• Z축 이동XY축 이동과 비슷
노이즈의 쉐이더
vec3 p = floor (x); //정수 값을 얻을
// UV계산
vec2 uv0 = (((p.xy + noiseOffset.xy * pz) +f.xy) +0.5) /256.0;
vec2 uv1 = (((p.xy + noiseOffset.xy * (p.z + 1)) +f.xy) +0.5) /256.0;
• UV2 종류 준비
• noiseOffest은Z값 증가에 따른 이동 픽셀 값
노이즈의 쉐이더
vec2 uv0 = (((p.xy + noiseOffset.xy * pz) +f.xy) +0.5) /256.0;
vec2 uv1 = (((p.xy + noiseOffset.xy * (p.z + 1)) +f.xy) +0.5) /256.0;
return lerp ( texture (texNoise, uv0) .x, texture (texNoise, uv1) .x, fz );
• 2 종류의 UV결과를 각각 샘플링
• 작은 숫자Z에 의한 선형 보간
• Z값을 고려하여 자연적인 노이즈의 변화
랜덤 텍스처 가공
●랜덤 텍스처를NoiseOffset분 이동
●이동은 루프
●결과를G에 저장
NoiseOffset
R 채널 G채널
쉐이더 계산
vec2 uv = (((p.xy + noiseOffset.xy * pz) + f.xy) +0.5) /256.0;
vec2 rg = texture ( texNoise , uv ).xy;
return lerp ( rg.x, rg.y, fz );
• R, G로noiseOffset를 고려하여 결과를 저장하고 최적화
노이즈의 쉐이더
float noise (in vec3 x)
{
vec3 f = fract(x); // 작은 숫자를 가져
// Hermine Curve
f = f * f * (3.0-2.0 * f);
vec3 p = floor (x); //정수 값을 얻을
// UV계산
vec2 uv = (((p.xy + noiseOffset.xy * pz) + f.xy) +0.5) /256.0;
vec2 rg = texture ( texNoise , uv ).xy;
return lerp ( rg.x, rg.y, fz );
}
노이즈의 쉐이더
float cloudNoise(vec3 p)
{
float f;
f = 0.50 * noise (p); p = p * 2.0;
f + 0.25 * noise (p); p = p * 2.0;
f + = 0.125 * noise (p);
return f;
}
VALUE NOISE결과
팔린 노이즈보다 품질은 나쁘지만 고속으로 제어할 수 있으며,
3D 텍스처와 달리 매개변수 조정을 통해 결과를 변경할 수 있다는 장점
VALUE NOISE
3D 텍스처 Value Noise
VALUE NOISE
●ShaderToy내에서 자주 사용되는 노이즈
●사용도 다양
거리에 따라 발생 외형의 문제
근경의 외형 원경의 외형
루프 문제
●가까운 곳에 맞춘 경우 먼 거리는 패턴이가 심함
●먼거리는 텍스처 샘플링 부하가 증가
⮚노이즈 샘플링 계산시 텍스처 캐시에 의해 충돌되지 않음으로 부하 증가
⮚같은 쉐이더에도 불구하고 장소에 따라 부하가 3 배 이상
샘플링 거리를 변경
●근거리, 중거리, 원거리에서 샘플링 값변화
●혼합하고있는 부분은 부하가 높음
●샘플링 개수도 거리에 따라 변화
⮚거리가 멀어지는 만큼 샘플링 수를 줄임
먼
중간
가까운
패턴이 보이면 거리를 좀 더 가깝게…
그림자 맵 사용
그림자 없음 그림자 있음
시간 변화 대응
기본만 대응
축소 버퍼
• 부하가 높기 때문에 축소 버퍼로 계산
• 색상 투명도 · 심도정보를 출력
• 마지막 프레임에 그려짐
색상 투명도 심도(깊이)
축소 버퍼
• 투명도는 Ray에서 가장 큰 수치
• 깊이(심도)는 투명도가 0
• 0 더 크고 레이에서 가장 앞의 심도
색상 투명도 심도
축소 버퍼
축소 버퍼
●축소 버퍼의 정보를 바탕으로 출력
축소 버퍼심도
●심도(깊이)는 메인 장면에 위화감없이 반영시키기 위해 사용
●씬의 심도(깊이) 운해의 깊이의 차이에서 반투명 합성
초기 값의 정의의 중요성
●시작점을 정의하지 않으면 부하가 큼
초기 값의 정의하지 않는 경우
관측점 위치와 최종 깊이 값에 항상 광선 계산이 필요
불필요한 레이 검사를 발생
불필요한 레이 검사
운해와 관측점이 멀리 떨어져 있으면 부하
초기 위치를 요구하고 나서 레이 검
사
운해와 레이와의 접촉점을 요구
운해는 원뿔 다각형 그리기
●운해 그리기에는 원뿔 폴리곤을 사용
●필요한 부분만 픽셀 부하가 발생하도록
운해에 구멍을비우고표현
매개 변수로 구름 바다의 구멍을 변경하는 위치와 반경을 정의
운해를 수직으로 배치 가능
VALUENOISE + VALUENOISE
Perlin-WorleyNoise ValueNoise
실제 사용은 안했지만 결과가 나쁘지는 않음
너무 바다 처럼 나와서…
하늘 구름
●하늘에 떠있는 구름
렌더링 경로
1. SkyMap를 작성
2. SkyMap을 참조 하늘 구름을 축소 버퍼에 그리기
3. 축소 버퍼의 결과를 주요 장면 그리기
SKYMAP
●구름이 존재하는 정보가 SKYMAP
●2D텍스처로 정보를 유지
●Value Noise에서 실시간 생성
●수치가 높을수록 구름의 높이가 높음
SKYMAP참조
●별 매개 변수를 정의
⮚별의 반경
⮚구름의 발생 위치
⮚구름의 높이
SKYMAP참조 점
●수평선 위로 구름이 발생하는 영역
수평선
SKYMAP참조 점
●수평선에 구름이 발생하는 영역
●XZ축의 좌표를UV좌표로 변환
하늘 구름 모델링
레이 비행
하늘 구름 모델링
구름의 발생 영
역
하늘 구름의 시작, 종료 위치
하늘 구름 모델링
레이 검사 영역을 생성
하늘 구름 모델링
중심 정도로 구름이 짙어 떠나 엷게
하늘 구름 모델링
하늘 구름의 농도 = CLAMP ((하늘 구름의 중심점-레이의 위치) /구름의 높이0,1)
구름의
높이
CLAMP((( X
하늘 구름의
농도)
자 보정 값) 곱셈 값0,1)투명도= X
하늘 구름의
중심점
레이 검사
하늘 구름 조명
투명도
lerp ( , 투명도, )
하늘
구름=
레이 검사
하늘 구름 모델링
하늘 구름 모델링
●Value Noise결과 투명도에 곱
모델 구름
모델 구름
●운해에있는 구름표현
●디자이너가 구름의 위치를 배치
모델 작성 규칙
●볼록 모양의 다각형 메쉬만
●디자이너가 MAYA위에 배치
배치 정보를 그린 모델 구름
모델 구름 모델링
●디자이너가 배치 한 모델 구름 다각형 메쉬를 그리기
●모델 구름 픽셀 쉐이더에서 구름 계산
모델 구름 모델링
다각형 메쉬에서
모델 구름 구을 정의
모델 구름 모델링
시작, 종료 위치를 구할
모델 구름 모델링
레이 검사를 수행
모델 구름 모델링
중심 점에 가까울수록 구름이
어두워지고 구름이 더 얇아 짐
모델 구름 모델링
모델 구름의 농도 = CLAMP ( 하늘 구름의 중심점-레이의 위치) /모델 구름의 반경
0,1)
CLAMP((( X 모델 구름의 농도)자 보정 값) 곱셈 값0,1)투명도= X
모델 구름 모델링
●노이즈에 관해서 Value Noise사용
●임의성 원한 때문에
자신의구름 만 계산
lerp ( , 투명도, )모델 구름 =
투명도
레이 검사 위치
여러 모델 구름참조는 포기
구름축소 버퍼의 해상도
●축소 버퍼의 해상도는 가로(1/4),세로(1/2)
●운해 표시의 특성상 세로의 정보가 높을 필요가 있었다
축소 버퍼 용 특수 Z버퍼
●구름 그리기 전에 축소 Z 버퍼를 생성
●그릴 때 축소 Z 버퍼에서 확인 고속화
●축소 Z 버퍼는 가로 4 세로 2 픽셀의 최대 Z 값을 사용
⮚최대값을 사용하지 않는 경우 확대시 픽셀의 틈새(간격)가 발생
GPU의 카운터 가속화
1. 주요 장면 구름 그리기 영역에 간단한 그리기
2. 카운터 기능을 사용 픽셀 쉐이더의 시작 수를 가져옵니다
3. 카운트 값에 숫자가 들어간 경우 구름의 처리를 실시
마지막으로...
●최적화에 매우 시간이 걸렸다
●Ray marching 으로 개발은 생각한 것처럼 예쁘게 만들기 쉽다
●레이수가 증가면 이쁘지만 부하가..
●타협하고 속도를 높이는데 많은 시간이 걸림
●DXR구름의 표현과 궁합이 좋은…?
●구름과 연기에 사용하기 적합한거 같음
●Value Noise는 사용이 편리
●palin 노이즈, 심플렉스 노이즈 등의 품질이 상당히 낮음
●속도는 빠름, 프랙탈도 표현

Weitere ähnliche Inhalte

Was ist angesagt?

김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
devCAT Studio, NEXON
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
noerror
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
JP Lee
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
noerror
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
Tiago Sousa
 

Was ist angesagt? (20)

스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
Precomputed atmospheric scattering(사전 계산 대기 산란)
Precomputed atmospheric scattering(사전 계산 대기 산란)Precomputed atmospheric scattering(사전 계산 대기 산란)
Precomputed atmospheric scattering(사전 계산 대기 산란)
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil PerssonLow-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
 
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...Penner   pre-integrated skin rendering (siggraph 2011 advances in real-time r...
Penner pre-integrated skin rendering (siggraph 2011 advances in real-time r...
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
A Scalable Real-Time Many-Shadowed-Light Rendering System
A Scalable Real-Time Many-Shadowed-Light Rendering SystemA Scalable Real-Time Many-Shadowed-Light Rendering System
A Scalable Real-Time Many-Shadowed-Light Rendering System
 
Dynamic Resolution and Interlaced Rendering
Dynamic Resolution and Interlaced RenderingDynamic Resolution and Interlaced Rendering
Dynamic Resolution and Interlaced Rendering
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기[NDC17] 물리 기반 대기와 구름 만들기
[NDC17] 물리 기반 대기와 구름 만들기
 
「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発「原神」におけるコンソールプラットフォーム開発
「原神」におけるコンソールプラットフォーム開発
 

Ähnlich wie 제노블레이도 2 ray marching을사용한 구름 표현

Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadow
MoonLightMS
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
MoonLightMS
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel model
Jaeyun Lee
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
종빈 오
 
I phone3d programming - Chap04:깊이와 현실감 향상시키기
I phone3d programming - Chap04:깊이와 현실감 향상시키기I phone3d programming - Chap04:깊이와 현실감 향상시키기
I phone3d programming - Chap04:깊이와 현실감 향상시키기
hanstar17
 

Ähnlich wie 제노블레이도 2 ray marching을사용한 구름 표현 (20)

크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
크게, 아름답게,빠르게, 일관되게 만들기: Just Cause 2 개발에서 배운 교훈들 (GPU Pro)
 
Depth buffershadow
Depth buffershadowDepth buffershadow
Depth buffershadow
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자[1023 박민수] 깊이_버퍼_그림자
[1023 박민수] 깊이_버퍼_그림자
 
Real-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel modelReal-time near-field global illumination based on a voxel model
Real-time near-field global illumination based on a voxel model
 
Volumetric Fog
Volumetric FogVolumetric Fog
Volumetric Fog
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
Bump Mapping
Bump MappingBump Mapping
Bump Mapping
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
Rendering realistic Ice objects
Rendering realistic Ice objectsRendering realistic Ice objects
Rendering realistic Ice objects
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
 
I phone3d programming - Chap04:깊이와 현실감 향상시키기
I phone3d programming - Chap04:깊이와 현실감 향상시키기I phone3d programming - Chap04:깊이와 현실감 향상시키기
I phone3d programming - Chap04:깊이와 현실감 향상시키기
 
Anomaly Detection based on Diffusion
Anomaly Detection based on DiffusionAnomaly Detection based on Diffusion
Anomaly Detection based on Diffusion
 
D2 Rain (1/2)
D2 Rain (1/2)D2 Rain (1/2)
D2 Rain (1/2)
 
언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFog언차티드4 테크아트 파트2 mipFog
언차티드4 테크아트 파트2 mipFog
 
Voxel based game_optimazation_relelase
Voxel based game_optimazation_relelaseVoxel based game_optimazation_relelase
Voxel based game_optimazation_relelase
 
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
[IGC2018] 유영천 개발자 - Voxel기반 네트워크 게임 최적화기법
 
Visualizing data using t-SNE
Visualizing data using t-SNEVisualizing data using t-SNE
Visualizing data using t-SNE
 

Mehr von 민웅 이

니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
민웅 이
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf
민웅 이
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
민웅 이
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse
민웅 이
 

Mehr von 민웅 이 (17)

Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
Siggraph15 A Novel Sampling Algorithm for Fast and Stable Real-Time Volume Re...
 
PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
자동 동적 3차원 입체시각
자동 동적 3차원 입체시각자동 동적 3차원 입체시각
자동 동적 3차원 입체시각
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color
 
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
「스퀘어 에닉스 오픈 컨퍼런스 2012」「Agni's Philosophy」비하인드 스토리
 
Valient killzone ps4 lighting
Valient killzone ps4 lightingValient killzone ps4 lighting
Valient killzone ps4 lighting
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
Microfacet brdf
Microfacet brdfMicrofacet brdf
Microfacet brdf
 
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
니시카와젠지의 3 d게임 팬을 위한「gravity daze」그래픽스 강좌
 
Wrapped diffuse
Wrapped diffuseWrapped diffuse
Wrapped diffuse
 
3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR3D Engine Tools with C++/CLR
3D Engine Tools with C++/CLR
 
Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)Light in screen_space(Light Pre Pass)
Light in screen_space(Light Pre Pass)
 
Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
Cheap realisticskinshading kor
Cheap realisticskinshading korCheap realisticskinshading kor
Cheap realisticskinshading kor
 
Ceh
CehCeh
Ceh
 
Deferred decal
Deferred decalDeferred decal
Deferred decal
 

제노블레이도 2 ray marching을사용한 구름 표현

Hinweis der Redaktion

  1. 제노블레이드 2의 레이 마칭을 이용한 클라우드 표현에 대해 말씀드리겠습니다. 우선, 나는 간단히 xenoblade 2를 설명 할 것이다.  젠노부레도 2는 닌텐도가 출시하고 개발에 협력한 닌텐도 스위치 전용 RPG로, 모놀리식 소프트웨어가 개발을 담당했습니다. ゼノブレイド2のレイマーチングを使った雲表現に関しての話をさせて頂きます。 まずゼノブレイド2に関して簡単に説明させて頂きます。 ゼノブレド2とは、任天堂様から発売、開発協力をして頂き、モノリスソフトが開発担当致しました、ニンテンドースイッチ専用のRPGです。
  2. 제노블레이드 2의 세계는 넓은 구름바다로 뒤덮인 세계입니다. 바다로 덮인 이 세상에서, 그것은 아르스라는 거대한 짐승의 상단에 살고있는 세계를 탐험 하는 RPG가된다.
  3. 모코모코 : 양털이나 뭉게구름처럼 보송보송하다는 뜻 이 세계관의 구름의 바다에 관해서는, 이미지가 방향이 된 것 같은 표정을 목표로 하고 싶다. 연기와 같은 반투명 한 표정이 있고, 바다와 같은 파형의 모코모코 느낌이 있어 구름 바다 표정입니다.  이 강의의 내용에 관해서는, 이러한 표현에 모놀리식 소프트웨어에 의해 수행 되는 방법을 설명 하 고 싶습니다., 당신과 함께 기술을 공유 하 고 개발 힌트의 일종.
  4. 우선, 구름바다를 표현할 때, 우리는 이 서신이 필수적이라고 말하는 것을 미리 결정했습니다. 첫째, 구름 바다의 모양은 파형이며, 둘째, 바다처럼 실시간으로 모양이 바뀌고, 셋째, 반투명 표현은 구름의 표현으로서 가능하다. 이 세 가지 조건은 사용할 수 있는 식에 대한 검색이 되었습니다.
  5. 세 가지 조건에 따라, 우리가 원래 고안 한 구름 바다의 두 가지 방법이 있었다. 하나는 그리드 기반 다각형에 의한 클라우드 표현입니다. 다른 하나는 파티클 기반 구름 표현입니다.
  6. 그리드 기반 표현의 예로, 정점과 다각형을 그림 의 형태로 형성합니다. 우리는 구름 바다의 파형 모양을 표현하는 프로그램으로 실시간으로 이를 변경하려고 노력했습니다. 수면등의 발현에 자주 사용되는 기법으로, 이 작품의 구름바다와 매우 양립할 수 있다고 생각되었다.
  7. 그러나, 그것은 내가 일할 것이라고 생각했던 계획이었지만, 문제는 즉시 발견되었습니다. 그것은 반투명 문제입니다. 구체적으로, 구름바다가 파형형상으로 변경되었을 때, 도면에 도시된 바와 같이 관측방향과 방향을 교차하는 다각형이 여러 개 있을 때 문제가 있었다. 다각형으로 정렬하는 문제
  8. 나는 반투명 정렬의 문제는 지금 해결되지 않는 문제라고 생각합니다. 이 두 예제 이미지는 동일한 반투명 값을 가진 빨간색과 파란색 BOX 다각형을 그립니다. 두 이미지의 차이점은 서로 다른 카메라 좌표로 캡처한 결과입니다. 왼쪽의 이미지는 문제가 되지 않습니다. 여기, 우리는 후면에 빨간 상자에서 그립니다, 우리는 다음 파란색 상자를 그립니다. 오른쪽 이미지의 경우 빨간색 BOX의 앞면을 먼저 그린 다음 파란색 BOX를 그립니다만 뒷면의 파란색 BOX가 강하게 나옵니다. 예외가 있지만 기본적으로 반투명 다각형은 카메라의 관점에서 후면에서 그리지 않는 한 올바르게 그려지지 않습니다. 이러한 작업은 후면에서 그리도록 정렬됩니다. 앞서 설명한 구름 바다 기술의 경우, 다각형에 의한 정렬에 대응할 필요가 있다. 이 문제는 CPU와 GPU 모두에 큰 부하가되고있다.
  9. 또 다른 문제는 입자 기반 접근 방식이었습니다. 이로 인해 문제가 빠르게 발생했지만, 구름바다를 표현할 때는 다량의 입자를 배치하지 않으면 표현할 수 없었습니다.
  10. 물론, 이 많은 양의 파티클 평등은 매우 높은 CPU와 GPU 부하를 일으켰으며 이는 현실적이지 않았습니다.
  11. 그래서, 최근 몇 년 동안, 광선 행진에 의해 클라우드 표현이 인기를 되기 시작했기 때문에, 이 해결 될 수 있다면? 생각했다.
  12. 모르는 사람이 있다고 생각하지만, 광선 행진에 대한 설명은 거칠다 레이 행진은 빛을 행진하고 통제하는 방법, 즉 광선입니다. 일반적인 기술은 포스트 효과입니다. 제노블레이드 2의 예는 국소 반사, SSAO 등에 사용되는 기법이다. 이러한 컨트롤은 지정된 픽셀 위치에서 좌표를 찾고, 특정 벡터 방향 또는 광선을 건너뛰고, 장면에서 정보를 선택하여 제어합니다.
  13. 그렇다면 구름 바다의 표현을 어떻게 제어할 수 있을까요? 우선, 나는 이것을 간략하게 설명 할 것이다. 이 이야기의 관점에서, 가장 중요한 것은 우리가 광선 행진에 의해 모델링하는 것입니다. 모델링에 대한 예로 구를 설명하겠습니다. 먼저 카메라에서 광선을 날리는다. 이 광선과 접촉하는 장면의 정보를 가져옵니다. 결과에 따라 모델링합니다.
  14. 모델링에 필요한 유일한 정보는 다음과 같은 것입니다. 구 반지름 구 좌표 구의 기본 색상 카메라 픽셀 쉐이더에 전달하기만 하면 됩니다.
  15. 먼저 전체 화면으로 그립니다. 다음으로 픽셀 샤이더가 시작되므로 픽셀의 관측점 벡터 또는 광선을 찾습니다. 샤이더에서 관측점 위치, 광선, 구의 위치 및 구의 반지름을 알 수 있으므로 거기에서 접촉 위치를 찾을 수 있습니다. 나는 접촉 계산의 측면에서 긴 떠날 것이다,하지만 난 당신이 충돌과 같은 컨트롤에 익숙한 경우 솔루션이 즉시 이해된다고 생각합니다. 그런 다음 색상, 법선 및 깊이는 접촉 위치에 따라 G 버퍼로 출력됩니다.
  16. 이미지는 결과의 예입니다. Xenoblade 2는 지연 렌더링을 사용하므로 g 버퍼를 정확하게 아웃아웃하여 이미지와 같은 결과를 얻을 수 있습니다. 이 구는 정점 다각형으로 모델링되지 않지만 샤더의 연산으로 표시됩니다.
  17. 그늘에 익숙하지 않은 사람들을 위해, 후반의 설명을 전달하기 어려울 수 있습니다. 내가 말하고 싶은 것은 다각형에 의한 드로잉 기술 외에도 모양을 표현할 수 있다고 생각하면 된다는 것입니다. 제노블레이드 2의 구름바다는 이러한 기법을 적용하고, 구름의 바다를 모델화하고 표현한다.
  18. 이제 구름의 바다를 설명해 드리고자 합니다. 이미지는 실제 구름 바다의 결과입니다. 난 당신이 게임을 데리러 희망하지만, 이들은 실시간으로 변경 표현이다.
  19. 우선, 바다의 모델링을 설명하고 싶습니다. 다시 한번, 나는 바다의 모양을 파형으로 만들고 싶었다. 그렇다면 이 모양을 어떻게 계산해야 할까요? 입니다. 나는 이전에 몇 가지를 설명, 나는 많은 양의 구을 배치하고 표현하는 방법이 있다고 생각하지만, 부하가 높기 때문에 그것을 피하고 싶었다. 높은 하중의 이유는 많은 양의 볼 충돌 판단이 필요하기 때문입니다. 그러나, 파형 모양을 표현, 구의 다량을 배치 할 수있다? 말의 아이디어는 변하지 않았다. 다른 방법으로 대량으로 보인다면 해결책입니다.
  20. 그런 다음, 그것은 나온 것으로 팔린 월리 잡음이라는 소음입니다. 이 소음의 관점에서, 당신은 최근 몇 년 동안 클라우드 표현을 한 경우, 그것은 대부분의 사람들이 알고 지금 매우 중요한 소음이다. 콘텐츠는 매우 간단하고 palin 소음과 벽의 소음을 결합합니다.
  21. 월리 노이즈는 스티븐 월리(Stephen Wally)가 개발한 소음입니다. 그것은 종종 물, 돌 패턴 슈미레이트 등에 사용됩니다. 최근에는 구름의 표현과 같이 잘 설계되어 있습니다.
  22. 팔린 노이즈는 켄 펄린이 개발한 소음입니다. 그것은 종종 CG 등에서 연기와 불꽃의 표현에 사용되며, 효과와 관련된 사람은 매우 익숙한 소음이 될 수 있습니다.
  23. 설명된 두 가지 노이즈가 결합되어 사용됩니다. 벽잡이노이즈가 사용되지 않는 이유는 구름의 경우 아름다운 원의 정보보다는 엉망진창을 추가하여 보이는 목적이 자연스러워지기 때문입니다.
  24. 이 데이터의 경우 데이터를 3D 텍스처로 유지했습니다. 3D 텍스처는 이미지와 같이 일반적인 2차원 텍스처가 아니라 z 값인 텍스처입니다. 해상도로, 나는 128 픽셀로 했다. 해상도가 높을수록 품질이 높아지지만 텍스처 샘플링 부하, 용량 문제 등이 이 해상도로 해결되었습니다. 계산에 사용되는 데이터이므로 압축하기 위해 변환으로 이동하지 않습니다. 단점은 용량이 증가한다는 것입니다.
  25. 그래서 실제로 그것을 모델링 하자. 먼저 광선을 건너뜁니다. 픽셀 샤이더가 시작되는 각 픽셀 위치에 대한 원근 벡터이며, 구를 모델링할 때 설명했습니다.
  26. 그런 다음 이미지에서와 같이 광선 방향과 같은 특정 공간으로 나눕니다. 검사 좌표는 장면의 정보를 참조하고 분할된 빨간색 부분에 대한 계산을 수행합니다.
  27. 우선, 검사 과정은 구름 바다의 가장 높은 지점 아래에 존재하는지 여부를 조사합니다. 아래인 경우 구름 바다의 모델링 계산을 수행합니다.
  28. 우선, 높이를 계산에 의해 요구되고 싶은 것으로 간주한 것은 구름 바다의 깊이였습니다. 구름 바다의 상층에 존재하면 얇고, 하층이라면 어둡게 하고 싶은 표정입니다. 계산하는 것은 간단합니다. 구름 바다의 가장 높은 지점에서 광선의 위치를 빼고 구름 바다의 깊이로 나눕니다. 클램프는 구름 바다의 어둠과 함께 끝에 이루어졌다.
  29. 다음으로, 구름 바다의 투명성이 요청됩니다. 우리가 방금 찾은 구름 바다의 어둠과 샘플링 된 Palin Wally 소음을 곱하십시오. 샘플링 좌표는 처리된 레이체크 좌표를 xyz 좌표를 사용합니다. 그런 다음 보정 값을 뺍니다. 이 빼기는 지정된 값 아래의 숫자를 생략하려고 하기 때문입니다. 예를 들어 0입니다. 2에서 0 보다 작은 숫자를 원하는 경우 0을 사용할 수 있습니다. 2를 보정 값에 있고 생략합니다. 마지막으로 보정 값으로 차감되기 때문에 곱셈 값이 수행되고 수치가 해제되고 0-1로 CLAMPing의 결과가 끝에 구름 바다의 투명도가 만들어집니다. 이 투명도가 0이상이면 구름 바다로 제어됩니다.
  30. 이는 계산 수분의 결과로 모델링한 결과입니다. 모코모코라는 것을 이해한다고 생각합니다.
  31. 모델링 후, 우리는 조명에 대해 이야기 할 것입니다. 이전 이미지에는 조명 계산이 포함되어 있습니다. 조명은 구름을 표현하는 데 매우 중요합니다. 그러나 조명에서 클라우드에는 정점 법법, 일반 정보라고 하는 모델에 법선 맵이 없습니다. 이러한 기술을 사용하지 않고 조명을 할 필요가있다.
  32. 그건 그렇고, 조명이 없다면, 올바른 이미지로도 잘 이해하지 못하는 형상이 됩니다. 파형 형상을 표현하면, 자연스럽지만, 조명이 있어, 입체감이 처음으로 외관으로 인식될 수 있습니다.
  33. 조명을 위해, 나는 다음 단계에서 그것을했다. 광원 방향의 반전 벡터가 광선의 검사 위치에서 위치하는 구름 바다의 투명도를 가져옵니다. 이 반전된 벡터 거리는 데이터에서 설정할 수 있습니다. 투명도는 앞에서 언급한 계산과 동일한 기술입니다. 조명에 의해 구름 바다의 매개 변수에 대해, 사전에 가장 투명한 조명 결과는 가장 낮은 투명도 조명의 결과를 보유한다. CPU에서 계산 결과에 따라 투명도는 선형을 보완하고 구름 바다로 제어하는 매개 변수로 사용됩니다. 이 광선 개수(분) 시퀀스를 계산한 결과는 화면에서 출력됩니다.
  34. 미리 계산된 조명의 관점에서 구름 바다의 기본 색상은 두 가지 색상을 가졌습니다. 투명도가 가장 높은 구름 바다의 기본 색상과 투명도가 낮은 구름 바다의 기본 색상이 각각 존재합니다. 이 두 가지 유형에 대한 조명 계산을 수행합니다. 투명도를 고려하여 조명의 감쇠 속도가 계산됩니다. 잘리지 않는 정보로 투명도가 높은 부분이 밝아지고, 투명도가 낮은 부분은 구름 바다로 차단되어 어두워지는 경향이 있는 정보가 됩니다. 나는 각 회사가 조명의 계산을위한 조명 모델을 가지고 있다고 생각, 그래서 나는 세부 사항을 떠날 것이다.
  35. 이미지는 투명도를 얻기 위한 거리의 차이입니다. 거리의 차이가 있었기 때문에 외형이 상당히 바뀌었습니다. 이 거리는 데이터에 의해 자유롭게 설정할 수 있도록 만들어졌습니다. 이 투명도를 얻을 때 광선 수를 늘리는 것이 가장 좋은 표현 기술이며, 더 많이 증가할수록 조명이 더 자연스럽지만 부하 문제로 인해 샘플링이 하나만 있습니다.
  36. 기본적인 모델링과 조명을 했지만 여전히 구름처럼 보이지 않습니다. 그것은 구름의 단단한 바다처럼 보인다. 여기에 연기처럼 보이도록 노이즈 계산을 추가했습니다. 추가된 소음은 창백한 소음입니다. 이 노이즈의 결과는 투명도에 대해 곱해졌습니다. Perin 노이즈 정보는 3D 텍스처에 저장되며 해상도는 128입니다.
  37. 노이즈를 추가하는 이미지의 예입니다. 연기가 자욱한 분위기를 추가하고 구름이 매우 가깝게 접근했습니다.
  38. 결과는 좋았지만, 나는 그것에 대해 걱정했다. 3D 텍스처에 저장할 때 해상도가 128이었으며 비슷한 소음이 자주 발생했습니다. 바다의 통제 특성으로 인해 가까운 시야에서 볼 수있는 상황이 많았고 유사성에 대해 우려했습니다. 또한 3D 텍스처를 종료하고 GPU 내에서 palin 노이즈를 계산하는 방법에 대해 생각했지만 부하가 매우 높기 때문에 현실적이지 않습니다. 3D 텍스처의 해상도를 줄일 수는 있지만 용량도 증가하고 텍스처 크기가 증가하여 샘플링 부하가 증가했습니다. 어떻게 든 대처할 수 없다고 말함으로써 다양한 조사의 결과로, 나는 또 다른 소음으로 변경하려고합니다.
  39. 즉, 가치 잡음입니다. 값 노이즈는 난수로 얻은 정보에 따라 계산되는 노이즈입니다. 그것은 매우 간단한 소음 기술입니다. Perlin 노이즈보다 품질이 낮지만 더 빠르게 계산할 수 있습니다. 우리는이 기술을 적용하고 제어할 수 있습니다.
  40. 값 노이즈 난수 정보는 2D 텍스처에 저장되었습니다. 해상도는 256입니다. 이 문서에서는 이 텍스처를 임의의 텍스처라고 합니다.
  41. ValueNoise는 먼저 그림에 표시된 대로 노이즈의 참조 위치에서 가장 좋은 네 개의 난수 정보를 획득하고 선형 완료 작업을 수행하고 숫자를 출력합니다. 그게 전부입니다. 그것은 소음 계산으로 매우 간단합니다. GPU인 경우 하나의 텍스처 샘플링이 작업을 수행합니다. 텍스처 참조는 일반 컨트롤보다 훨씬 빠른 하드웨어에서 선형 완료 계산을 수행합니다. 이러한 측면에서 값 노이즈는 GPU에 대해 매우 호환되는 노이즈 계산입니다.
  42. 실제 소음 제어 절차를 설명하겠습니다. 그것은 갑자기,하지만 난 실제 그늘을 보고 하려고합니다. 너무 많이 보더라도 이해하기 쉽지 않다고 생각합니다. 나는 순서대로 설명하고 싶습니다.
  43. 먼저 인수 x는 샘플링 위치입니다. 광선 검사 좌표로 처리된 숫자 값으로 구성됩니다. 이 처리 값은 구름 바다 측의 매개 변수로 재생하도록 만들어집니다.
  44. 다음으로 몇 가지 점이 추출되고 결과는 에르미트 곡선으로 처리됩니다. 왜 은하 곡선으로 처리하는 것은 임의의 텍스처에 대한 액세스와 관련이 있습니다.
  45. 왼쪽 그림은 선형 UV 값을 나타내고 오른쪽 그림은 에르미트 곡선의 UV 값입니다. Hermit 곡선의 주된 이유는 매끄러운 보완을 수행하기 위한 것입니다. 구름과 같은 노이즈의 경우 선형으로 매개변수를 변경하는 것보다 곡선에 곡선을 곱하는 것이 더 자연스럽기 때문에 이 작업이 수행됩니다.
  46. 그런 다음 임의 텍스처의 UV를 계산하고 임의 텍스처의 결과를 출력합니다. 먼저 샘플링 좌표에서 정수를 찾습니다. 그건 파란색 부분입니다. 정수를 찾아 이전에 계산된 elmy 및 곡선을 추가합니다. UV 계산의 일부(256)는 임의의 텍스처의 해상도, 0이다. 5를 추가하고 256으로 나누어 UV 공간으로 처리합니다. UV 결과는 노이즈의 결과로 임의의 텍스처및 출력으로 샘플링됩니다. 이것은 기본적인 노이즈 계산이지만 이 샤이더에 문제가 있습니다. 인수 Z는 고려되지 않습니다. 노이즈 계산을 위해 Z를 고려해야 합니다.
  47. 이는 좋지 않은 예이지만 z축 계산을 생각하지 않고 Z 값을 추가하면 Z축의 이동이 XY 축의 이동과 비슷해집니다. 그게 문제입니다. Z축을 고려하는 방법에 대한 이야기가 됩니다.
  48. Z를 고려하기 위해 두 가지 유형의 UV를 준비하고 샘플링하는 방법을 설명합니다. 먼저 UV0의 경우 Z 값의 정수 값에노이즈 오프셋을 곱합니다. 노란색 부분입니다. 이 노이즈 오프셋은 z축 이동에 따라 변경되는 픽셀 수입니다. Uv1의 경우 Z의 정수 값에 하나를 추가한 결과입니다.
  49. 이 두 UV는 임의의 텍스처에서 샘플링하는 데 사용됩니다. 이 샘플링의 결과는 낮은 수의 Z를 사용하여 선형 완료 처리를 수행하여 노이즈의 결과입니다. 노이즈 오프셋을 정수로 이동하면 낮은 숫자를 사용하여 선형 완성을 사용하여 단계별 이동을 촉진하여 자연 Z 값을 고려한 노이즈가 변경됩니다.
  50. 다음, 최적화에 대해 이전 방법에서는 노이즈 계산에서 샘플링 수가 두 번 발생했습니다. 이를 가속화하기 위해 G 채널에 임의의 텍스처에 대한 정보도 있습니다. 구체적으로, 첫 번째 단계는 임의의 텍스처를 노이즈 오프셋 분으로 이동하는 것이다. 이것은 반복 이동입니다. 있는 대로 이동하면 설명이 없는 영역이 발생하기 때문에 루프 설정이 됩니다. 이 이동의 결과를 임의 텍스처의 G에 저장합니다. 이렇게 하면 샤더를 조정하고 텍스처를 한 번 샘플링할 수 있습니다.
  51. G 채널에 노이즈 오프셋 이동 정보가 있는 경우 샤더는 다음과 같습니다. 먼저 노이즈 오프셋과 정수 Z를 고려하여 UV를 계산합니다. VUv의 샘플 텍스처 생성된 R과 G는 노이즈의 결과로 z 소수점 및 출력을 사용하여 선형적으로 보완됩니다. 이 속도.
  52. 전체를 다시 살펴보겠습니다. 먼저 소수점과 에르미트 곡선을 찾습니다. 그런 다음 Z축을 고려하여 UV 값을 찾습니다. 텍스처, 선형 소수점의 z축 완성및 컨트롤을 참조하십시오. 이 흐름 시퀀스는 기본 노이즈 계산입니다.
  53. 마지막으로, 이전 노이즈 연산은 샘플링 거리에 의해 처리되고, 세 번 계산되고, 합성된다. 노이즈의 결과로 품질이 낮기 때문에 한 번만 제어할 수 있습니다. 이 방법은 패긴 노이즈와 유사합니다.
  54. 일련의 흐름에 의해 계산된 노이즈의 결과입니다. 매개 변수에 따라 결과가 다른 것을 볼 수 있습니다. 팔린 노이즈보다 더 나쁘지만 고속으로 제어할 수 있으며, 3D 텍스처와 달리 매개변수 조정을 통해 결과를 변경할 수 있다는 장점이 있습니다.
  55. 이것은 결과입니다. 동영상이 언제인지 이해하기가 조금 더 쉽지만 이미지라면 그게 다야? 할 이미지가있을 수 있습니다. 값 노이즈의 장점은 매개 변수가 모양을 변경할 수 있다는 것입니다. 매개 변수로 처리하여 이미지의 3D 텍스처 결과에 가깝게 볼 수 있습니다. 3D 텍스처의 경우 텍스처 데이터를 변경하지 않으면 이 문제를 처리하기가 어렵습니다. 제노블레이드 2에서는 클라우드 바다의 매개 변수를 상황에 맞게 조정하고 싶었기 때문에 마침내 가치 노이즈를 채택했습니다.
  56. 위의 기술은 ShaderToy라는 glsl을 설명하는 사이트에서 사용됩니다. 나는 또한이 사이트를 참조 응답. 당신이 특정 기술에 대해 배우고 싶다면, 나는이 사이트가 배울 수있는 가장 짧은 방법이 될 것이라고 생각했다.
  57. 다시 구름바다이야기로 돌아오겠다. 그것은 좋아 보였지만 또 다른 문제가 있었습니다. 그것은 거리로 인한 외관의 문제였다. 왼쪽 이미지의 구름 바다 매개변수는 짧은 거리에 맞게 조정되며 근접에서 볼 때 특히 문제가 되지 않습니다. 먼 뷰에서이 매개 변수를 보면 오른쪽이미지에서와 같이 끔찍한 루프처럼 보입니다.
  58. 가까운 보기로 조정 된 것은 당연하지만 가까운 보기에는 문제가 없습니다. 그러나 먼 뷰에는 매우 문제가 있으며 루프가 두드러집니다. 동시에 부하에 문제가되었습니다. 클로즈 뷰에서 조정된 컨트롤로 텍스처 캐시를 쉽게 칠 수 있으며 샘플링이 됩니다. 인접 한 픽셀은 종종 인접 한 텍스처를 참조 하기 때문에. 반대로 텍스처의 샘플링 하중은 원거리 뷰에서 증가합니다. 인접 픽셀의 거리는 먼 정보로 구성되므로 텍스처는 노이즈 샘플링 계산시 캐시에 의해 충돌되지 않으므로 부하가 증가합니다. 하중은 평소보다 3배 이상 높았습니다. 이것은 해결되어야 하는 필수적이었습니다.
  59. 다루기 쉽습니다. 각각 짧은 거리, 중간 거리 및 장거리에서 적절한 샘플링 거리로 변경하였다. 그러나, 짧은 거리, 중간 거리 등이 혼합되는 영역은, 두 가지 종류의 제어가 발생하기 때문에, 또한 영역의 하중이 올라가는 문제점이 있다. 나는 이것을 다룰 수 없었다. 속도 향상에 대응하여 중거리 및 장거리 거리에 따라 샘플링 횟수를 줄이는 컨트롤을 추가했습니다.
  60. 실제 결과는 이미지와 같습니다. 노란색 반점은 먼 거리입니다. 파란색은 중간 거리입니다. 녹색은 짧은 거리입니다.
  61. 그 지역이 당겨지면 그런 느낌이 됩니다. 루프가 더 두드러지고 있습니다. 이것은 거리의 문제를 감소.
  62. 다음으로, 나는 글을 보충 할 것이다. 글을 쓸 때 그림자 맵 결과도 살펴보았습니다. 이미지 왼쪽에는 그림자 맵이 없으며 오른쪽은 그림자 맵입니다. 그림자 맵을 참조하면 입체 효과가 증가하여 자연스러운 모양이 되었습니다.
  63. 시간 변경과 같은 조명 매개 변수의 변경으로 인해 전용 제어가 없었습니다. 그냥 조명 매개 변수를 조정하고 바다가 잘 작동합니다. 이러한 종류의 렌더링 기법은 다른 흐름에 대한 조명 계산 및 기타 요소를 결합하여 문제를 사전에 방지합니다.
  64. 또 다른 포인트로, 구름 바다의 드로잉의 경우 축소 버퍼에 그려지고 마지막 프레임에 그려집니다. 물론 이는 부하를 줄이기 위해 축소 버퍼에 그려집니다. 감소 버퍼, 색상, 투명도 및 깊이의 출력 내용이 출력됩니다.
  65. 색상에 관해서는 구름바다를 그리는 결과는 현재의 결과로 출력됩니다. 투명도는 광선의 수의 더 큰 투명도를 출력합니다. 깊이는 투명도 0입니다. 0보다 크고 광선에서 가장 깊이를 출력합니다.
  66. 축소 버퍼에 출력한 후 이 결과를 사용하여 장면으로 복원합니다.
  67. 깊이를 내는 이유는 불편함 없이 메인 씬을 반영하기 위함입니다. 구체적으로, 투명도는 구름 바다의 깊이와 주 장면의 깊이 사이의 차이에서 계산된 다음 구름 바다의 투명도를 곱하고 최종 장면에 출력합니다. 이를 통해 구름의 바다는 메인 장면에서 불편함 없이 반사되었습니다.
  68. 다음 초기 값의 정상성에 대해서는 구름 바다의 광선 행진과 관련하여 시작 ING 위치가 정의되지 않으면 하중이 예기치 않게 됩니다.
  69. 정의되지 않은 경우 구름 바다의 관측점 위치와 최종 깊이 값에 항상 광선 계산이 필요합니다.
  70. 그러나 실제 구름 바다 계산에 관해서는 이미지의 영역 부분에 대한 불필요한 광선 제어가 됩니다. 그것은 매우 쓸모없는 계산입니다. 이미지에서와 같이 구름 바다와 관측점이 가까우면 아직 문제가 되지 않지만 구름 바다와 관측점이 멀리 떨어져 있으면 부하가 올라오게 됩니다.
  71. 따라서, 레이 벡터와 구름 바다의 가장 높은 지점의 접촉 위치는 그늘에서 사전에 요청되고, 거기에서 그것을 계산한다. 이렇게 하면 쓸모없는 계산이 미리 생략되고 가속화됩니다.
  72. 실제 구름 바다 드로잉에 관해서는, 이미지는 그리기 위해 거대한 원뿔 다각형을 사용했다. 원뿔 다각형을 그리면 픽셀 섀이든이 필요한 경우에만 활성화되고 가속됩니다.
  73. 구름 바다의 또 다른 표현으로 구멍을 만들 수 있었다. 매개 변수로 구름 바다의 구멍을 변경하는 위치와 반경을 정의하고 그늘진 자의 구멍을 뚫습니다. 그것은 구름 바다가 이미지에서와 같이 떨어지는 등의 표현에 사용되었다.
  74. 또 다른 포인트는 수직으로 구름의 바다를 배치 할 수 있다는 것입니다. 이 작업은 샤이더에서도 계산됩니다. 결과적으로, 그것은 이미지 처럼 느낀다. 예를 들어 구름 벽이 있는 상황의 지도와 같이 사용합니다.
  75. 실제로 는 사용하지 않았지만, 월리 노이즈와 밸류노이즈가 아닌 구름바다의 표현으로서, 밸류노이즈와 밸류노이즈도 곱한 좋은 외관이었습니다. 우리가 이것을 사용하지 않은 이유는 구름의 바다가 역학으로 너무 많이 바뀌었기 때문입니다. 조금 더 조정하면 이것도 사용할 수 있습니다. 제 생각에는. 구름 바다에 대한 설명을 끝내자.
  76. 다음 하늘 구름을 설명하겠습니다. 하늘 구름이란? 그러나 그것은 이름 남아있다. 그것은 하늘에 떠있는 구름입니다.
  77. 제노 블레이드 2는 하늘 구름에 대한 그리기 경로로 다음과 같은 절차입니다 먼저 SKyMap을 만듭니다. 다음으로, 이 만든 SkyMap을 참조 하 고 축소 버퍼에 하늘 구름을 그릴 것 이다. 이 수축 버퍼의 결과는 주 장면에 그려지고 완료됩니다.
  78. 우선, 스카이맵에 대해 설명하고 싶습니다. 구름이 있는 위치에 대한 정보로 SkyMap이라는 텍스처를 준비했습니다. 정보를 2D 텍스처로 보유합니다. 이러한 계산은 실제 컴퓨터에서 실시간으로 계산됩니다. 계산 기법으로 ValueNoise를 사용하고 매개 변수에 따라 결과가 변경됩니다. 숫자가 높을수록 구름이 두꺼워지게 됩니다.
  79. 실제 결과는 다음과 같습니다. 왼쪽 위 이미지는 SkyMap에서 희소한 구름이 있는 매개변수입니다. 클라우드의 실제 결과는 이미지의 느낌입니다.
  80. 흐린 날씨에 이미지에 관해서는 매개 변수가 발생했습니다 그것은 그림자를 가짐으로써 단순한 흐린 결과가 되지 않습니다.
  81. 그런 다음 실제 스카이맵 참조와 관련하여 스카이맵 참조에서 별의 매개변수를 정의했습니다. 매개변수는 별의 반지름, 구름의 위치 및 구름의 높이입니다.
  82. 첫째, 별의 반경에서 수평선의 선을 정의합니다. 다음으로, 구름이 발생하는 영역을 살펴봅니다.
  83. 위에서 이전 결과를 보면 그림처럼 보입니다. SkyMap은 구름이 발생하는 이 수평선 위의 영역을 나타냅니다. SkyMap UV 좌표는 실제 좌표의 XZ를 변환하는 데 사용됩니다.
  84. 구름의 바다처럼 하늘 구름의 모델링으로, 먼저 광선을 비행. 광선은 이전과 같이 픽셀 샤이더의 픽셀 위치의 벡터 방향입니다.
  85. 다음으로 광선과 접촉하는 하늘 구름의 시작 및 끝 위치를 찾습니다. 자세한 충돌의 계산 방법은 생략되었지만 구의 반경, 구름의 높이 및 광선의 방향에서 접촉 위치를 찾을 수 있습니다.
  86. 시작 위치와 끝 위치가 결정되므로 광선 검사가 영역에 분산됩니다. 구름 바다의 시간처럼 시작하고 끝나는 이유는 쓸모없는 광선 검사를 수행하지 않기 때문입니다.
  87. 하늘 구름을 제어하는 측면에서, 그것은 세대의 중심에 가까울수록, 구름이 어두워지고, 구름이 얇아지고, 바람이 얇아집니다. 이러한 컨트롤은 또한 구름의 바다에 매우 가깝습니다. 구름바다에서는 구름바다의 가장 높은 지점과 깊이에 대한 정보가 계산되었다.
  88. 계산 방법은 구름의 바다만큼 복잡하지 않습니다. 우선, 하늘 구름의 어둠이 요구됩니다. 하늘 구름의 중심점과 광선 검사 위치의 차이를 추구하고 구름의 높이로 나눈 것은 하늘 구름의 두께입니다. 이 어둠에서 벽의 노이즈는 구름의 바다뿐만 아니라 보정 값을 곱하고 곱하고 투명도가 결정됩니다. 빼기와 곱셈의 의미에 대한 이유는 클라우드 바다뿐만 아니라 사양의 다음과 같은 수치 값을 생략하고자하기 때문입니다.
  89. 조명은 또한 구름의 바다에 매우 가깝습니다. 광선 검사의 위치에서 광원의 반전 벡터 방향으로 참조를 결정합니다. 참조의 투명도는 이전 계산에서 결정됩니다. 구름의 바다와 마찬가지로 선형 완성은 가장 투명한 조명과 가장 투명한 조명을 기반으로 하며, 이는 미리 계산되며 빈 구름 수를 기반으로 합니다. 이러한 흐름 앉아서 분, 광선 확인을 수행
  90. 이미지는 이전 기술에 의한 계산의 결과입니다. 구름의 바다뿐만 아니라 연기의 감각이 없기 때문에 소음을 추가합니다.
  91. 값 노이즈는 연기감을 표현하는 데 사용됩니다. 소음은 그 어느 때보다 도배되고 제어됩니다. 제노블레이드 2의 하늘 구름은 이런 식으로 표현된다.
  92. 마지막으로 모델 클라우드에 대해 설명합니다.
  93. 디자이너 측에서 구름 바다에 또 다른 구름을 배치해 달라는 요청이 있었습니다. 이를 처리하기 위해 모델 클라우드라는 기술에 대응했습니다. 모델 클라우드는 설계자가 어떤 셰이프를 배치할 수 있도록 하는 클라우드 표현입니다.
  94. 모델 셰이프로볼록다각만 메시만 만들어졌습니다. 배열에 관해서는, 디자이너는 MAYA에 배치됩니다.
  95. 마야는 이미지로 배치되었다 게임의 카메라는 이 배치된 다각형의 중앙에 있습니다. 상층의 후면에서 상당히 바라보는 것으로 생각하십시오.
  96. 이미지는 배치 정보를 그린 모델 클라우드입니다. 게임에서이 화면과 같은 것은 없지만 맨 위 레이어에서 이처럼 보입니다.
  97. 이제 모델 구름 그리기 단계를 살펴보겠습니다. 모델 클라우드는 먼저 디자이너에 배치 된 다각형 메시를 그립니다. 그려진 모델 구름의 픽셀 쉐이더 내에서 전용 구름 광선행진을 제어합니다.
  98. 파란색 선은 모델 구름의 다각형 메시 모양입니다. 셰이프에 맞는 구를 정의합니다. 이 구는 다각형 메시의 모양에 따라 자동으로 생성됩니다.
  99. 다음 정의 된 공과 광선 접촉점은 두 점으로 점수가 매겨지며 점수가 매겨지며, 시작 및 끝 위치에 대한 정보입니다.
  100. 그런 다음 시작 및 끝 위치를 분할하고 이전과 같이 광선 검사를 수행합니다. 우리가 시작과 끝 위치를 요청한 이유는 불필요한 광선 검사뿐만 아니라 구름 바다와 하늘 구름을 수행하지 않기 때문입니다.
  101. 모델 구름의 중심점에 가까울수록 구름이 어두워지고 구름이 더 얇아집니다. 구름 바다의 깊이, 하늘 구름의 높이 및 모델 구름의 중심점까지의 거리입니다.
  102. 계산 방법으로, 그것은 현재와 크게 다르지 않다 모델의 중심 위치와 광선 위치 사이의 거리를 결정하고 모델 구름의 반지름으로 나눕니다. 이 것을 모델 클라우드의 어둠으로 만들어 봅시다. 그런 다음 모델 구름에 어두움과 값 노이즈를 곱하고 보정 값을 빼고 끝에 곱한 다음 투명도를 찾습니다. 나는 값이 잡음이 언급되는 점을 제외하고는 거의 유사한 작업이라고 생각합니다.
  103. 벽의 노이즈를 사용했지만 모델 클라우드에서는 값 노이즈를 사용합니다. 값 노이즈는 혼란을 원했기 때문에 모델 클라우드에 채택됩니다.
  104. 다음, 모델 클라우드의 조명에 대해 이것은 이전과 거의 동일한 기술입니다. 라이트 방향의 광선 위치에서 반전된 벡터 방향으로 모델 구름의 투명도를 결정합니다. 투명도에 기초하여 선형 완성에 의한 조명 계산이 수행되었고 모델 클라우드의 수치값이 만들어졌습니다. 이 수의 레이미지 검사를 반복하고 결과를 출력합니다.
  105. 조명 모델 클라우드의 관점에서 여러 모델을 참조하고 계산하는 방법이 가장 고품질의 방법이었습니다. 그러나 이러한 메서드는 부하가 부디 올라갈 것이기 때문에 포기되었습니다. 이러한 기술에 대해서는 우주분업 등을 수행하여 통제할 수 있는 곳이라고 생각하지만, 여러 가지 문제를 포기했다.
  106. 그리고 이전과 마찬가지로 끝, 출력에 다시 값 노이즈를 추가하고 모델 클라우드의 결과로 구성됩니다. 모델 구름 의 도면 의 흐름입니다.
  107. 보충 정보로서 감소된 버퍼의 해상도로서, 1과 4수평, 1과 2수직이다. 높은 수직 해상도의 이유는 구름의 바다였다. 디스플레이 컨트롤의 특성상 측면에서 볼 수 있는 관점이 많았기 때문에 구름 바다에서는 수직 정보가 꼭 높은 것이 필요했습니다. 따라서, 나는 특별한 해상도로 합니다. 구름 바다가 없다면 수직과 수평으로 1과 4를 선택했다고 생각합니다.
  108. 구름이 그려지기 전에 특수 Z 버퍼도 사용할 수 있었습니다. 구름의 바다, 하늘 구름, 모델 구름, 모든 도면은 축소 Z 버퍼를 볼 수 있습니다. z 버퍼로 확인하여 불필요한 픽셀 샤이더의 시작을 사전에 피하고 속도를 높이고 있었습니다. 축소 Z 버퍼를 생성하기 위한 조건으로, 수축 정보를 생성할 때 최대값 4픽셀 및 길이 2픽셀의 z 값이 사용된다. 이는 최대값을 사용하지 않을 경우 확장시에 그려지지 않는 픽셀의 간격이 발생할 가능성이 있기 때문이다.
  109. 이제 스위치에 GPU 이벤트 수를 계산할 수 있습니다. 나는 이것이 스위치에 국한되지 않고 대부분의 하드웨어에 국한되지 않는다고 생각합니다. 이 카운터 함수는 구름을 그리기 전에 구름이 그려진 영역에 대한 주 장면에 대한 매우 간단한 그리기 프로세스를 수행하는 데 사용됩니다. 카운터 함수를 사용하면 픽셀 샤이더가 활성화되거나 계산되며 카운트 값이 하나도 있는 경우 제어 형태로 속도가 빨라지기도 합니다. 실내 등에 들어갈 때에는 CPU상에 구름을 그리지 않는 등의 제어가 상응하였으나, 제노블레이드2는 매우 넓은 맵이기 때문에, 이러한 핸드헬드 대응에 한정되어 있기 때문에, 이러한 컨트롤을 추가하여 속도를 수행하였고, 속도를 수행하였다.
  110. 구름의 바다를 표현하는 가장 어려운 부분은 최적화였습니다. 광선 행진으로 표정을 개발하는 것을 생각한 것처럼 아름답게 만드는 것은 매우 쉽습니다. 특정 기술이 결정되면 광선의 검사 수가 증가하면 모양이 아름답습니다. 그러나 실제로는 작동하지 않습니다. 광선 수를 늘리면 아름답게 되더라도 하중이 비례적으로 증가합니다. 타협하고 속도를 높이는 방법을 알아내는 데는 많은 시간이 걸렸습니다. 외관에 관해서는, 그것은 상당히 일찍 완료되었지만, 최적화의 작업은 정말 마지막 순간에 가고 있었다. 미래에 비슷한 일을 하거나 비슷한 일을 하는 사람들이 있다면, 이 최적화를 위해 많은 시간이 걸릴 것이라고 생각합니다. 또한 레이트레이싱을 중심으로 화제가 된 dxr이 구름의 표현과 호환된다는 느낌이 들었습니다. 특히 후반부에 설명된 모델 클라우드의 조명 부분, 즉 광선 행진이 계산되지만 이 부분은 DXR에서 접촉할 다각형 목록을 찾는 데 사용됩니다. 이를 바탕으로 계산하는 것으로 고속 조명을 할 수 있다고 생각합니다. DXR 기능을 추가하면 향후 구름과 연기의 표현이 향상될 것이라고 생각했습니다. 가치 소음에 관해서는, 나는 개인적으로 매우 처리하기 쉬운 소음이라고 생각했다. palin 노이즈, 심플렉스 노이즈 등의 품질이 상당히 낮습니다. 그러나 고속측이 좋고, 고해상도의 프랙탈을 표현할 수 있는 점이 매력, 앞으로는 프랙탈 관련 작업과 텍스처 블렌딩을 모델 중심으로 사용할 수 있을 것이라고 생각했습니다.