Top Banner
Scissor Rect Mgun.
13

Scissor Rect

Feb 22, 2016

Download

Documents

Hashim

Scissor Rect. Mgun . PipeLine. . 정점변환 -> 그래픽 라이브러리에 의해 객체 공간의 정점 위치들이 결과적으로 기본도형 레스터화를 위해 윈도우 공간으로 변환 . Rasterization & Fragment. . 레스터화 -> 모형의 정점들이 윈도우 공간으로 절단 , 변환되고 나면 GPU 는 각 그래픽 기본도형들이 뷰포트의 어떤 픽셀들을 덮을 것인지를 결정 .. 기본 도형에 속한 영역을 한줄씩 픽셀들로 채우는 과정 . . 단편 (Fragment) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Scissor  Rect

Scissor RectMgun.

Page 2: Scissor  Rect

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

Page 3: Scissor  Rect

Rasterization & Fragment. 레스터화 -> 모형의 정점들이 윈도우

공간으로 절단 , 변환되고 나면 GPU 는 각

그래픽기본도형들이 뷰포트의 어떤

픽셀들을 덮을 것인지를 결정 ..기본 도형에 속한 영역을 한줄씩픽셀들로 채우는 과정 .

. 단편 (Fragment) -> 깊이 , 보간된 정점 색 , 보간된 텍스쳐 좌표 ,픽셀 자체의 위치의 묶음 .

Page 4: Scissor  Rect

Rasterization & Fragment. 단편 (Fragment) 연산

1) 픽셀 소유권 판정 .2) 가위판정 (scissor rect)3) 알파 판정4) 스텐실 판정5) 깊이 판정

Page 5: Scissor  Rect

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

Page 6: Scissor  Rect

Light Scissor

No Light Scissor

Shadow volumes extendto edges of viewport

Light Scissor

Shadow volume fillreduced significantly

Page 7: Scissor  Rect

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

Page 8: Scissor  Rect

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

Page 9: Scissor  Rect

Light Scissor. Light Scissor-> Project light volume onto the image plane – 조명구가 시야에 보이는 경우 , 뷰포트에서 그 광원이 영향을 미치는 영역이 뷰포트 전체가 아닐 수도 있다 . 조명구를 이미지 평면에 투영해 그 영역에서만 랜더링 .

Camera

Light

Image Plane

View Frustum

http://www.gamasutra.com/view/feature/2942/the_mechanics_of_robust_stencil_.php?page=2

Page 10: Scissor  Rect

CalculationScissor Rect Calculation

Y 축에 평행한 접평면들의 단위 길이 법선벡터 N 의 y 좌표는 0.이 접평면이 원점을 지나므로 원점과의 거리 (d) 는 0.

1) T = <Nx, 0, Nz, 0>2) T ·L = r3) Nx2 +Nz2 = 1

T ·L => NxLx + NzLz = rNzLz = r – NxLx

양변을 제곱하고 Nz2 = 1 - Nx2 으로 치환 .(1 - Nx2) Lz2 = r2 – 2rNxLx + Nx2Lx2

이차 방정식 형태로 묶어주면 아래와 같다 .(Lx2+Lz2)Nx2 + (-2rLx)Nx + r2 – Lz2 = 0

Page 11: Scissor  Rect

CalculationScissor Rect Calculation(Lx2+Lz2)Nx2 + (-2rLx)Nx + r2 – Lz2 = 0

이 식에 대한 판별식 D 를 구하면 아래와 같다 .D = 4[r2Lx2 - (Lx2 + Lz2)(r2 – Lz2)]

Lx + Lz <= r 이면 ( 즉 , 구를 xz 평면에 평행하게 투영해서 생긴 원 안에 원점이 있으면 ) 정확히 D<=0 이며 이는 광원의 경계구가뷰포트 전체를 채우는 것을 의미한다 .

Page 12: Scissor  Rect

CalculationScissor 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;

Page 13: Scissor  Rect

Calculation

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