1 / 13

Scissor Rect

Scissor Rect. Mgun . PipeLine. . 정점변환 -> 그래픽 라이브러리에 의해 객체 공간의 정점 위치들이 결과적으로 기본도형 레스터화를 위해 윈도우 공간으로 변환 . Rasterization & Fragment. . 레스터화 -> 모형의 정점들이 윈도우 공간으로 절단 , 변환되고 나면 GPU 는 각 그래픽 기본도형들이 뷰포트의 어떤 픽셀들을 덮을 것인지를 결정 .. 기본 도형에 속한 영역을 한줄씩 픽셀들로 채우는 과정 . . 단편 (Fragment)

hashim
Download Presentation

Scissor Rect

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Scissor Rect Mgun.

  2. PipeLine • . 정점변환 • -> 그래픽 라이브러리에 의해 객체 공간의 • 정점 위치들이 결과적으로 기본도형 레스터화를 • 위해 윈도우 공간으로 변환.

  3. Rasterization & Fragment • . 레스터화 • -> 모형의 정점들이 윈도우 공간으로 • 절단, 변환되고 나면 GPU는 각 그래픽 • 기본도형들이 뷰포트의 어떤 픽셀들을 • 덮을 것인지를 결정.. • 기본 도형에 속한 영역을 한줄씩 • 픽셀들로 채우는 과정. . 단편(Fragment) -> 깊이, 보간된 정점 색, 보간된텍스쳐 좌표, 픽셀 자체의 위치의 묶음.

  4. Rasterization & Fragment . 단편(Fragment) 연산 픽셀 소유권 판정. 가위판정(scissor rect) 알파 판정 스텐실 판정 깊이 판정

  5. Scissor Optimizations . Optimizations -> Most important fill-rate optimization for stencil shadows ->Hardware does not generate fragments outside the scissor rectangle — very fast ->Scissor rectangle can be applied on a per-light basis or even a per-geometry basis ->Requires that lights have a finite volume of influence

  6. Light Scissor No Light Scissor Shadow volumes extend to edges of viewport Light Scissor Shadow volume fill reduced significantly

  7. Scissor Test 그리기 범위를 뷰포트 일부로 제한 : 마스크

  8. -> 감쇠되는 광원사용시 광원의 영향이 미치는 곳을 반지름 r의 구 형태로 한정하고 그 구를 벗어나는 곳에 대해서는 조명을 가하지 않는다. 이는 시야 절두체의 바깥에 있는 부분은 렌더링에서 일찍 제외할 수 있다는 장점을 가진다.

  9. Light Scissor . Light Scissor -> Project light volume onto the image plane – 조명구가 시야에 보이는 경우, 뷰포트에서 그 광원이 영향을 미치는 영역이 뷰포트 전체가 아닐 수도 있다. 조명구를 이미지 평면에 투영해 그 영역에서만 랜더링. Light View Frustum Image Plane Camera http://www.gamasutra.com/view/feature/2942/the_mechanics_of_robust_stencil_.php?page=2

  10. Calculation • Scissor Rect Calculation • Y축에 평행한 접평면들의 단위 길이 법선벡터N의 y좌표는 0. • 이 접평면이 원점을 지나므로 원점과의 거리(d)는 0. • T = <Nx, 0, Nz, 0> • T ·L = r • Nx2 +Nz2 = 1 • T ·L => NxLx + NzLz = r • NzLz = r – NxLx • 양변을 제곱하고 Nz2 = 1 - Nx2 으로 치환. • (1 - Nx2) Lz2 = r2 – 2rNxLx + Nx2Lx2 • 이차 방정식 형태로 묶어주면 아래와 같다. • (Lx2+Lz2)Nx2 + (-2rLx)Nx + r2 – Lz2 = 0

  11. Calculation • Scissor Rect Calculation (Lx2+Lz2)Nx2 + (-2rLx)Nx + r2 – Lz2 = 0 이 식에 대한 판별식 D를 구하면 아래와 같다. D = 4[r2Lx2 - (Lx2 + Lz2)(r2 – Lz2)] Lx + Lz <= r 이면 (즉, 구를 xz평면에 평행하게 투영해서 생긴 원 안에 원점이 있으면) 정확히 D<=0이며 이는 광원의 경계구가 뷰포트 전체를 채우는 것을 의미한다.

  12. Calculation • Scissor Rect Calculation X축 (Y축도 계산방식이 동일) float fD = (r2 * L2.x - (L2.x + L2.z) * (r2 - L2.z)); if(fD <= 0.0f) return false; float fSqrtD = sqrtf(fD); T0.x = (fRadius * vL.x + fSqrtD) / (L2.x +L2.z); T0.z = (fRadius - T0.x * vL.x) / vL.z; T1.x = (fRadius * vL.x - fSqrtD) / (L2.x +L2.z); T1.z = (fRadius - T1.x * vL.x) / vL.z; vP[0] = vL - fRadius * T0; vP[1] = vL - fRadius * T1;

  13. Calculation 사각형 영역 예외처리 - 뷰포트 크기 고려, 사각형 영역 크기 고려. • Scissor Rect Calculation

More Related