> For the complete documentation index, see [llms.txt](https://taewoongs-organization.gitbook.io/jtwjs-dev-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://taewoongs-organization.gitbook.io/jtwjs-dev-wiki/dev_note/3d-graphic/rendering-algorithnm.md).

# Rendering Algorithnm

## Rendering Algorithnm

* 컴퓨터가 3D Graphic을 생성하는데 쓰이는 기술

## Resterization

> 다각형(주로 삼각형)을 2D 이미지의 픽셀로 변환하는 것

* Scene의 각 오브젝트의 위치와 이미지에 어떻게 투영되는지에 대한 초기 이미지를 생성하는데 유용
* 그림자, 반사, 굴절과 같은 사실적인 효과를 구현하는 데는 어려움

## Ray Tracing

* 이미지의 각 픽셀에서 광선을 찍고 추적하여 최종적으로 빛이 광원을 향해 반사되는 것을 추적
* 터너 휘트(Turner Whitted)가 제안한 것으로 휘트 레이 트레이서라고 불립니다.

## Path tracing

> 모든 광원으로부터 발산하는 광선을 추적하여 오브젝트들과 상호작용(상호작용할 때마다 반사)하는 과정에서 재귀적으로 광원에 닿을 떄까지 추적하여 빛을 계산하는 렌더링 알고리즘

* 실제 세계에서 빛이 상호 작용하는것과 비슷하게 처리하여 현실적인 이미지를 생성
* 계산이 매우 오래 걸리고 이미지에 노이즈가 많이 발생한다

#### Property

* enabled
* samplePerFrame
* frames
* tiles
* bounces
* filterGlossyFactor
* punctualLights
* resolutionFactor
* backgroundIntensity
* backgroundBlur
* denoiseEnabled
* misEnabled
* denoise
* dof

### DOF (Depth Of Field)

> "선명하게 보이는 가장 가까운 피사체와 가장 먼 피사체 사이의 거리"\
> **초점이 맞는 영역**을 뜻한다.

<figure><img src="https://1912740209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3GVYdZvmqQyBVq29ebqk%2Fuploads%2FOJDwGAdNF6EpVNBhAUTp%2F%E1%84%8B%E1%85%A2%E1%86%AF.webp?alt=media&amp;token=74f29d38-fc57-4400-90b6-0a57d0a519a3" alt=""><figcaption></figcaption></figure>

* DoF를 제어함으로써 사람의 시선을 원하는 곳으로 유도할 수 있다.
* path tracing에서 DOF를 구현하려면 `Focus distance`와 `aperture Size`라는 두 가지 매개 변수가 필요
  * Focus distance: 카메라에서 물체가 얼마나 멀리 떨어져야 초점이 맞을지를 결정, 이 값은 항상 양수여야 한다.
  * aperture Size: 초점이 맞지 않는 물체가 얼마나 흐릿하게 표시될지를 결정
  * aperture: 빛이 카메라 센서에 닿을 수 있도록 하는 렌즈의 구멍, 클수록 더 많은 빛이 통과하여 Dof가 얕아진다.

<figure><img src="https://1912740209-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3GVYdZvmqQyBVq29ebqk%2Fuploads%2FSYx3qJh8zCT21FMUaAuz%2Fdof.webp?alt=media&amp;token=e898e752-f501-46d3-bb76-d721a9d9d662" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
모든 픽셀의 초점은 주어진 방향에서 카메라로부터 같은 거리에 있는 구형 평면을 만들게 됩니다. 이 초점면 위 또는 근처에 교차하는 모든 물체는 초점이 맞는 것처럼 표시되며, 그렇지 않으면 초점이 맞지 않는 것처럼 표시됩니다
{% endhint %}

#### Property

* **Focal Length** -> 렌즈의 주요 측정으로 물체를 확대하는 방식, 초점 거리가 길수록 화각이 좁아지고 배율이 높아짐
* **autoFocus**
* **focusPoint**
* **focusDistance** -> 거리가 멀어질수록 DoF가 넓어진다.
* **fStop ->** aperture(조리개)를 표현, 값이 클수록 DoF가 넓어진다.
* **bokehSize**
* **apertureBlades**&#x20;
* **apertureRotation**
* **anamorphicRatio**
