연막 · 밀도와 시야
공유하는 것은 밀도장. 보는 것은 각자의 광선입니다.
월드 z축을 관통하는 구멍을 두 시점에 같은 이벤트로 적용합니다.
공유 월드 상태
선택한 렌더링
균일 β = 0.5, 길이 2 m
각 화면의 십자선 = 중앙 검사 광선 · 주황 표적 = 해당 시점의 연막 뒤 배경
문제 · 원인 · 해결 · 대가
‘균일 밀도 검증’을 누르고 고정 알파 오류를 선택해 샘플을 10에서 20으로 바꿔보세요. 같은 공간인데 A의 투과율은 약 34.9%에서 12.2%로 줄어듭니다. 매 샘플에 α = 0.1을 적용하기 때문입니다.
보정 방식은 샘플 길이 Δs마다 α = 1 − exp(−βρΔs)를 계산합니다. 앞에서 뒤로 C ← C + Tαc, T ← T(1 − α)를 누적하고 배경에 남은 T를 곱합니다. 균일 β = 0.5/m, 2 m 경로의 투과율은 exp(−1) ≈ 36.8%로 분할 수와 무관합니다. 변화하는 밀도장에서는 샘플이 너무 적으면 작은 구멍이나 밀도 봉우리를 놓칠 수 있습니다.
구멍은 월드 z축 방향의 원통 영역에서 밀도를 0으로 만드는 사건입니다. A와 B는 같은 상태를 조회하며 광선 경로와 통과 길이에 따라 투과율이 달라질 수 있습니다. 같은 시점에서는 같은 결과가 나옵니다. 빌보드는 같은 2D 분포를 매 시점 정면으로 돌린 비교 모형이므로 구멍도 화면을 향합니다. 연막을 부피로 그리는 것만으로 유체 방정식을 계산했다고 말할 수 없습니다.
‘차폐 규칙’은 각 시점의 중앙 광선을 256개 샘플과 보정 알파로 별도 적분하고 임계값과 비교하는 이 실험의 규칙입니다. 렌더 샘플 수를 바꿔도 이 규칙은 변하지 않습니다. 실제 경쟁 게임에서는 서버의 판정·동기화 정책을 별도로 정해야 합니다. 샘플 수 증가에는 밀도 조회 비용이 들고, 낮은 해상도에는 공간 정보 손실이 남습니다.
CPU에서 3D 절차 밀도 또는 균일 상자를 직교 광선으로 적분합니다. 픽셀 색은 단순 흡수·발광 누적이며 다중 산란, 광원 그림자, 유체 속도장, 네트워크 전송은 구현하지 않습니다. 바람은 밀도 함수를 x축으로 옮기며 구멍은 월드에 고정됩니다. 주황 표적은 두 시점 모두 비교하기 위한 각각의 화면 배경이고 동일 월드 물체의 투영은 아닙니다. 실제 CS2의 내부 구현이나 서버 시야 규칙을 재현하지 않습니다.