KR20200018207A - Systems and methods for rendering reflections - Google Patents

Systems and methods for rendering reflections Download PDF

Info

Publication number
KR20200018207A
KR20200018207A KR1020190035373A KR20190035373A KR20200018207A KR 20200018207 A KR20200018207 A KR 20200018207A KR 1020190035373 A KR1020190035373 A KR 1020190035373A KR 20190035373 A KR20190035373 A KR 20190035373A KR 20200018207 A KR20200018207 A KR 20200018207A
Authority
KR
South Korea
Prior art keywords
ray
pixel
reflection
intersection
rays
Prior art date
Application number
KR1020190035373A
Other languages
Korean (ko)
Inventor
야신 울루다그
Original Assignee
일렉트로닉 아트 아이엔씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/101,103 external-priority patent/US10818079B2/en
Priority claimed from US16/101,019 external-priority patent/US10621774B2/en
Priority claimed from US16/101,098 external-priority patent/US10796474B2/en
Application filed by 일렉트로닉 아트 아이엔씨. filed Critical 일렉트로닉 아트 아이엔씨.
Publication of KR20200018207A publication Critical patent/KR20200018207A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/55Radiosity

Abstract

Embodiments of the present invention provide systems for rendering reflections and methods thereof. To add reflections to a pixel in an image, ray marching is used to attempt to find a ray intersection for primary reflections. When using rasterization to render a scene, objects outside the viewport are culled. As such, ray marching may fail in various situations. For example, during ray marching, a ray emits the viewport without intersecting any other objects of the scene. In such a situation where ray marching fails, the ray can be re-cast as a ray-traced ray. The ray-traced ray is cast into the full three-dimensional (3D) scene with all objects present (i.e., objects are not culled). Ray tracing is then used to attempt to find a ray intersection, i.e., for a primary reflection. The embodiments can be used in real-time or near-real-time applications such as video games.

Description

반사들을 렌더링하는 시스템들 및 방법들{SYSTEMS AND METHODS FOR RENDERING REFLECTIONS}Systems and Methods of Rendering Reflections {SYSTEMS AND METHODS FOR RENDERING REFLECTIONS}

본 개시는 일반적으로 컴퓨터 그래픽에 관한 것이고, 보다 구체적으로는 반사들을 렌더링하는 시스템들 및 방법들에 관한 것이다.FIELD The present disclosure relates generally to computer graphics, and more particularly to systems and methods of rendering reflections.

컴퓨터 생성 이미지들은 종종 뷰 공간의 기하학적 모델과 뷰 공간에서의 모델링된 오브젝트들을 검사하는 것에 의해 생성된다. 오브젝트들의 기하학적 모델은 임의적인 해상도를 가질 수 있지만 일반적으로 각각의 오브젝트는 뷰 공간에 배치되고 그들의 표면 상에 컬러, 컬러 패턴, 또는 텍스처를 갖는 유한 수의 폴리곤들, 이를 테면 삼각형들, 및/또는 폴리곤의 투명도를 표현하는 알파 값들로 표현된다. 이미지는 일반적으로 픽셀 어레이로서 출력 (즉, 저장, 디스플레이, 송신 또는 달리 프로세싱) 된다.Computer-generated images are often generated by examining geometric models in view space and modeled objects in view space. The geometric model of the objects may have arbitrary resolution but generally each object is placed in view space and has a finite number of polygons, such as triangles, and / or having a color, color pattern, or texture on their surface. Expressed as alpha values representing the transparency of the polygon. The image is typically output (ie stored, displayed, transmitted or otherwise processed) as a pixel array.

컴퓨터 생성 이미지들의 하나의 일반적인 특징은 출력되는 이미지에 반사들을 포함시키는 것이다. 반사들을 포힘시키는 것은 더욱 시각적으로 사실적인 결과들을 제공한다. 특정 애플리케이션들, 이를 테면, 애니메이션 필름들에서, 광선 트레이싱 기술들은 양호한 결과들을 제공하는 광선 트레이싱 반사들을 제공하기 위해 이용될 수도 있다. 그러나 광선 트레이싱은 계산적으로 고가이다. 복잡한 장면들의 경우 매우 강력한 컴퓨터들 또는 렌더 팜들을 이용하는 경우에도 광선 트레이싱 반사들을 이용하여 비디오 시퀀스의 단일 프레임을 렌더링하는데 수 시간 또는 수 일이 걸릴 수도 있다. One common feature of computer generated images is the inclusion of reflections in the output image. Foaming the reflections provides more visual and realistic results. In certain applications, such as animated films, ray tracing techniques may be used to provide ray tracing reflections that provide good results. However, ray tracing is computationally expensive. Complex scenes can take hours or even days to render a single frame of a video sequence using ray tracing reflections even when using very powerful computers or render farms.

다른 애플리케이션들, 이를 테면, 비디오 게임들에서, 계산 속도가 우선순위이다. 비디오 게임들에서 프레임들은 사용자가 비디오 게임과 상호작용할 때 매우 빠르게, 즉 실시간으로 또는 근실시간으로 렌더링된다. 이와 같이, (단일 프레임들을 렌더링하는데 수 시간 또는 수 일이 걸릴 수 있는) 반사들에 대한 광선 트레이싱 기술들은 비디오 게임들에 적합하지 않다. 이러한 이유로, 실시간 또는 근실시간으로 비디오 게임들에서 반사들을 렌더링하기 위해 다양한 다른 기술들이 개발되어 왔다. 그러나, 이들 다른 기술들은 특히 전체 광선 트레이싱으로부터 획득되는 반사들에 비해 열악한 품질을 겪는다.In other applications, such as video games, computation speed is a priority. Frames in video games are rendered very quickly when the user interacts with the video game, ie in real time or in near real time. As such, ray tracing techniques for reflections (which may take hours or days to render single frames) are not suitable for video games. For this reason, various other techniques have been developed for rendering reflections in video games in real time or near real time. However, these other techniques suffer from poor quality, especially compared to the reflections obtained from full ray tracing.

이와 같이, 기존의 접근법들의 단점 및 한계를 극복하는 반사들을 렌더링하는 시스템 및 방법이 당해 기술 분야에 필요하다.As such, there is a need in the art for a system and method of rendering reflections that overcome the disadvantages and limitations of existing approaches.

일 실시형태는 이미지에서 픽셀에 대한 반사 정보를 생성하는 방법, 컴퓨터 판독가능 저장 매체 및 디바이스를 제공한다. 본 방법은: 하나 이상의 프로세서들에 의해, 픽셀에서의 오브젝트의 표면의 조도 값을 결정하는 단계; 하나 이상의 프로세서들에 의해, 조도 값에 기초하여 픽셀에 대해 발생할 광선들의 수를 결정하는 단계; 광선들의 수에서의 각각의 광선에 대해 하나 이상의 프로세서들에 의해 광선에 대한 광선 방향을 선택하는 단계; 광선들의 수에서의 각각의 광선에 대해, 하나 이상의 프로세서들에 의해, 광선의 광선 방향에 기초하여 광선의 광선 진행을 수행하는 단계; 광선 진행이 성공적인 각각의 광선에 대해, 하나 이상의 프로세서들에 의해 광선 진행을 통해 발견된 광선에 의해 교차되는 오브젝트의 컬러 정보를 저장하는 단계; 광선 진행이 실패한 각각의 광선에 대해, 하나 이상의 프로세서들에 의해 광선 트레이싱을 통해 광선을 캐스팅하고, 광선 트레이싱을 통해 발견된 광선에 의해 교차되는 오브젝트의 컬러 정보를 저장하는 단계; 및 하나 이상의 프로세서들에 의해 광선 진행을 통해 발견된 광선들에 의해 교차되는 오브젝트의 컬러 정보 및 광선 트레이싱을 통해 발견된 광선들에 의해 교차되는 오브젝트들의 컬러 정보에 기초하여 픽셀에 대한 반사 정보를 생성하는 단계를 포함한다.One embodiment provides a method, computer readable storage medium and device for generating reflection information for a pixel in an image. The method includes: determining, by one or more processors, an illuminance value of a surface of an object in a pixel; Determining, by one or more processors, the number of rays to occur for the pixel based on the illuminance value; Selecting a ray direction for the ray by one or more processors for each ray in the number of rays; For each ray in the number of rays, performing, by one or more processors, ray propagation of the ray based on the ray direction of the ray; For each ray for which ray progression is successful, storing color information of the object intersected by the ray found through the ray progression by one or more processors; For each ray for which ray propagation has failed, casting the ray through ray tracing by one or more processors and storing color information of the object intersected by the ray found through ray tracing; And generate reflection information for the pixel based on the color information of the object crossed by the rays found through the ray propagation by the one or more processors and the color information of the objects crossed by the rays found through the ray tracing. It includes a step.

일 실시형태는 이미지에서의 반사 정보를 생성하는 방법, 컴퓨터 판독가능 저장 매체 및 디바이스를 제공한다. 본 방법은: 하나 이상의 프로세서들에 의해, 이미지의 제 1 픽셀에서의 오브젝트의 표면의 제 1 조도 값을 결정하는 단계; 하나 이상의 프로세서들에 의해, 제 1 조도 값에 기초하여 제 1 픽셀에 대해 발생하는 광선들의 수를 결정하는 단계; 하나 이상의 프로세서들에 의해, 이미지에서 제 1 픽셀의 임계 반경 내에서 제 2 픽셀을 식별하는 단계; 하나 이상의 프로세서들에 의해, 제 2 픽셀에서의 오브젝트의 표면의 제 2 조도 값을 결정하는 단계; 하나 이상의 프로세서들에 의해, 제 1 조도 값과 제 2 조도 값 사이의 차이가 조도 임계값 이하라고 결정하는 단계; 하나 이상의 프로세서들에 의해, 제 2 픽셀에 대응하는 반사 광선에 의해 교차되는 오브젝트의 컬러 정보를 결정하는 단계; 및 하나 이상의 프로세서들에 의해, 제 2 픽셀에 대응하는 반사 광선에 의해 교차되는 오브젝트의 컬러 정보에 기초하여 제 1 픽셀에 대한 반사 정보를 생성하는 단계; 상기 제 1 픽셀은 픽셀들의 제 1 세트에 포함되고 제 2 픽셀은 픽셀들의 제 2 세트에 포함되며, 픽셀들의 제 2 세트에서의 픽셀들에 대응하는 반사 광선들에 의해 교차되는 오브젝트들의 컬러 정보는 광선 트레이싱 및/또는 광선 진행을 통하여 결정되고, 픽셀들의 제 1 세트에서의 픽셀들에 대응하는 반사 광선들에 의해 교차되는 오브젝트들의 컬러 정보는 픽셀들의 제 2 세트에서의 픽셀들에 대응하는 반사 광선들에 의해 교차되는 오브젝트들의 컬러 정보에 기초한다.One embodiment provides a method, computer readable storage medium and device for generating reflection information in an image. The method includes: determining, by one or more processors, a first roughness value of a surface of an object at a first pixel of an image; Determining, by one or more processors, the number of rays occurring for the first pixel based on the first illuminance value; Identifying, by one or more processors, a second pixel within a threshold radius of the first pixel in the image; Determining, by one or more processors, a second roughness value of the surface of the object at the second pixel; Determining, by one or more processors, that the difference between the first illuminance value and the second illuminance value is equal to or less than an illuminance threshold; Determining, by one or more processors, color information of the object crossed by the reflected light beam corresponding to the second pixel; And generating, by one or more processors, reflection information for the first pixel based on the color information of the object intersected by the reflection ray corresponding to the second pixel; The first pixel is included in the first set of pixels and the second pixel is included in the second set of pixels, and the color information of the objects crossed by the reflected rays corresponding to the pixels in the second set of pixels is Color information of the objects determined through ray tracing and / or ray propagation and intersected by the reflected rays corresponding to the pixels in the first set of pixels are reflected rays corresponding to the pixels in the second set of pixels. Based on the color information of the objects intersected by them.

일 실시형태는 반사 정보를 생성하는 방법, 컴퓨터 판독가능 저장 매체 및 디바이스를 제공한다. 본 방법은: 제 1 프레임에 대해, 제 1 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 위치를 결정하는 단계로서, 오브젝트의 교차부의 위치는 타원의 형상에 대응하는, 교차부의 위치를 결정하는 단계; 제 1 프레임에 대해, 제 1 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 반사 영역에서의 위치를 결정하는 단계; 제 1 프레임에 대해, 카메라의 제 1 위치를 향한 제 1 픽셀에 대한 반사 광선에 의한 오브젝트의 교차부의 반사 영역에서의 위치로부터 제 1 라인을 투사하는 단계; 제 1 프레임에 대해, 제 1 오브젝트의 표면 상의 제 1 라인의 마이크로패싯부의 위치를 결정하는 단계; 제 2 프레임에 대해, 제 2 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 위치를 결정하는 단계로서, 제 2 프레임은 제 1 프레임에 후속하는, 교차부의 위치를 결정하는 단계; 제 2 프레임에 대해, 제 2 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 반사 영역에서의 위치를 결정하는 단계; 제 2 프레임에 대해, 카메라의 제 2 위치를 향한 제 2 픽셀에 대한 반사 광선에 의한 오브젝트의 교차부의 반사 영역에서의 위치로부터 제 2 라인을 투사하는 단계; 제 2 프레임에 대해, 제 2 오브젝트의 표면 상의 제 2 라인의 교차부의 위치를 결정하는 단계; 제 2 오브젝트의 표면 상의 제 2 라인의 교차부의 위치의 표면 조도가 제 1 오브젝트의 표면 상의 제 1 라인의 교차부의 위치의 표면 조도의 임계 조도 내에 있다고 결정하는 단계; 및 제 1 픽셀에 대한 반사 정보에 기초하여 제 2 픽셀에 대한 반사 정보를 생성하는 단계를 포함한다.One embodiment provides a method, computer readable storage medium, and device for generating reflective information. The method includes: determining, with respect to the first frame, the location of the intersection of the object based on the reflected light beam for the first pixel, wherein the location of the intersection of the object corresponds to the shape of the ellipse. step; For a first frame, determining a position in a reflective area of an intersection of the object based on the reflected light beam for the first pixel; Projecting a first line relative to the first frame from a position in the reflective region of the intersection of the object by the reflected light beam relative to the first pixel towards the first position of the camera; Determining a position of the microfacet portion of the first line on the surface of the first object relative to the first frame; For a second frame, determining a location of the intersection of the object based on the reflected light beam for the second pixel, the second frame following the first frame; For a second frame, determining a position in the reflective area of the intersection of the object based on the reflected light beam for the second pixel; Projecting, for a second frame, a second line from a position in the reflective region of the intersection of the object with the reflected light beam relative to the second pixel towards the second position of the camera; Determining, with respect to the second frame, the location of the intersection of the second line on the surface of the second object; Determining that the surface roughness of the position of the intersection of the second line on the surface of the second object is within a critical roughness of the surface roughness of the position of the intersection of the first line on the surface of the first object; And generating reflection information for the second pixel based on the reflection information for the first pixel.

도 1 은 본 개시의 양태들에 따른 이미지들을 렌더링하기 위한 컴퓨터 시스템의 블록도이다.
도 2 는 일 실시형태에 따른 프로세스 및 버퍼의 상호작용을 예시하는 블록도이다.
도 3 은 일 실시형태에 따른 렌더링될 장면의 블록도이다.
도 4a 는 일 실시형태에 따라, 래스터화를 이용하여 장면을 렌더링하는 것을 예시하는 블록도이다.
도 4b 는 일 실시형태에 따른 장면의 래스터화된 이미지의 일 예이다.
도 5 는 일 실시형태에 따른 상이한 반사 유형들을 예시하는 일 예의 이미지이다.
도 6 는 일 실시형태에 따른 거울 반사들 (specular reflections) 을 예시하는 블록도이다.
도 7 은 일 실시형태에 따른 글로시 반사들 (specular reflections) 을 예시하는 블록도이다.
도 8a 는 일 실시형태에 따라 광선 진행 성공을 예시하는 블록도이다.
도 8b 는 일 실시형태에 따른 스크린 공간에서의 이미지를 예시한다.
도 9a 는 일 실시형태에 따라 광선 진행 실패를 예시하는 블록도이다.
도 9b 는 일 실시형태에 따른 도 9a 에 도시된 장면의 스크린 공간에서의 이미지를 예시한다.
도 10a 는 일 실시형태에 따른 z-버퍼 데이터의 일부분의 그래픽 표현이다.
도 10b 내지 도 10d 는 일 실시형태에 따른 z-버퍼 데이터의 일부분의 그래픽 표현이다.
도 11 은 일 실시형태에 따른 광선 진행을 수행하기 위한 방법 단계들의 플로우 다이어그램이다.
도 12 는 일 실시형태에 따라 광선 진행을 실패한 광선들에 대한 광선 트레이싱을 수행하는 것을 예시하는 블록도이다.
도 13 은 일 실시형태에 따른 반사들을 렌더링하기 위한 방법 단계들의 플로우 다이어그램이다.
도 14a 는 일 실시형태에 따라 3D (3차원) 장면을 예시하는 블록도이다.
도 14b 는 도 14a 에서의 3D 장면을 나타내는 블록도로서, 일부 광선들은 일 실시형태에 따라 이웃하는 픽셀들로부터 재이용된다.
도 15 는 일 실시형태에 따른 인접 픽셀들의 광선 정보를 재이용하기 위한 방법 단계들의 플로우 다이어그램이다.
도 16a 는 일 실시형태에 따른 반사의 일 예이다.
도 16b 는 일 실시형태에 따라, 투사된 포인트로부터 눈/카메라의 업데이트의 가상 포지션까지의 선을 예시한다.
도 17 은 일 실시형태에 따라, 상이한 표면 조도 값들을 갖는 후속 프레임들의 2 개의 포인트들을 예시하는 블록도이다.
도 18 은 일 실시형태에 따른 시간 필터링을 수행하기 위한 방법 단계들의 플로우 다이어그램이다.
도 19 는 연신된 반사의 예들을 예시한다.
도 20 은 일 실시형태에 따른 연신된 반사들을 설명하는 블록도이다.
도 21 은 일 실시형태에 따른 연신된 반사의 일 예이다.
도 22 는 일 실시형태에 따른, 연신된 반사들을 나타내는 타원의 단축의 미리-계산된 길이의 플롯이다.
도 23 은 일 실시형태에 따른, 연신된 반사들을 나타내는 타원의 장축의 미리-계산된 길이의 플롯이다.
도 24 는 일 실시형태에 따른 글로시 반사들에 타원형 필터를 적용하는 일 예이다.
도 25 는 일 실시형태에 따라 타원형 필터를 적용하는 플로우 다이어그램이다.
1 is a block diagram of a computer system for rendering images in accordance with aspects of the present disclosure.
2 is a block diagram illustrating the interaction of a process and a buffer according to one embodiment.
3 is a block diagram of a scene to be rendered according to one embodiment.
4A is a block diagram illustrating rendering a scene using rasterization, in accordance with an embodiment.
4B is an example of a rasterized image of a scene according to one embodiment.
5 is an example image illustrating different reflection types according to one embodiment.
6 is a block diagram illustrating specular reflections in accordance with an embodiment.
7 is a block diagram illustrating glossy reflections in accordance with an embodiment.
8A is a block diagram illustrating light propagation success in accordance with an embodiment.
8B illustrates an image in screen space according to one embodiment.
9A is a block diagram illustrating light propagation failure, according to one embodiment.
9B illustrates an image in screen space of the scene shown in FIG. 9A, according to one embodiment.
10A is a graphical representation of a portion of z-buffer data according to one embodiment.
10B-10D are graphical representations of portions of z-buffer data according to one embodiment.
11 is a flow diagram of method steps for performing ray propagation in accordance with an embodiment.
12 is a block diagram illustrating performing ray tracing on rays that failed to propagate rays in accordance with one embodiment.
13 is a flow diagram of method steps for rendering reflections in accordance with an embodiment.
14A is a block diagram illustrating a 3D (three-dimensional) scene according to one embodiment.
FIG. 14B is a block diagram illustrating the 3D scene in FIG. 14A, where some rays are reused from neighboring pixels according to one embodiment. FIG.
15 is a flow diagram of method steps for reusing ray information of adjacent pixels in accordance with an embodiment.
16A is an example of reflection, according to one embodiment.
16B illustrates a line from the projected point to the virtual position of the update of the eye / camera, in accordance with one embodiment.
17 is a block diagram illustrating two points of subsequent frames having different surface roughness values, in accordance with an embodiment.
18 is a flow diagram of method steps for performing temporal filtering according to an embodiment.
19 illustrates examples of drawn reflections.
20 is a block diagram illustrating elongated reflections, according to one embodiment.
21 is an example of elongated reflection, according to one embodiment.
22 is a plot of pre-computed lengths of short axis of ellipses representing elongated reflections, according to one embodiment.
FIG. 23 is a plot of a pre-computed length of the major axis of an ellipse representing elongated reflections, according to one embodiment.
24 is an example of applying an elliptical filter to glossy reflections according to one embodiment.
25 is a flow diagram of applying an elliptical filter in accordance with an embodiment.

다음의 상세한 설명은 본 개시 또는 적용 및 이용들을 제한하려는 것은 아니며 본래 예시적인 것이다. 또한, 선행 기술 분야, 배경, 요약, 도면의 간략한 설명 또는 다음의 상세한 설명에 제시된 임의의 표현 또는 암시된 이론에 의해 구속되지 않는다.The following detailed description is not intended to limit the disclosure or its application and uses, but is merely illustrative. Moreover, it is not limited by any representation or implied theory presented in the prior art, background, summary, brief description of the drawings, or the following detailed description.

본 개시의 실시형태들은 반사들을 렌더링하기 위한 시스템들 및 방법들을 제공한다. 개시된 실시형태들은 실시간 또는 근실시간으로 수행될 수 있고 따라서, 애플리케이션들, 이를 테면, 비디오 게임들에 적합하다. 본원에서 보다 상세하게 설명된 바와 같이, 개시된 실시형태들은 3D (3 차원) 가상 장면의 (즉, 가상 카메라로부터 스크린 공간 상으로의) 프라이머리 시선들을 렌더링하기 위해 래스터화를 이용한다. 스크린 공간에서의 각각의 픽셀에 대해 반사들을 추가하기 위하여 광선 진행을 이용하여 프라이머리 반사들에 대한 광선 교차부를 찾으려 한다. 래스터화를 이용하여 장면을 렌더링할 때 뷰포트 외부의 오브젝트들이 컬된다. 이에 의해, 광선 진행이 여러 상황들에서 실패할 수도 있고, 이를 테면, 광선이 진행될 때, 광선은 장면의 임의의 다른 오브젝트에 교차함이 없이 뷰포트를 출사한다. 광선 진행이 실패한 이러한 상황에서, 광선은 광선 트레이싱된 광선으로서 재캐스트될 수 있다. 광선 트레이싱된 광선은 모든 오브젝트들이 존재하는 (즉, 오브젝트가 컬되지 않은) 풀 3D 장면으로 캐스트된다. 그 후, 광선 트레이싱을 이용하여, 광선 교차부, 즉, 프라이머리 반사에 대해 찾으려 한다. 개시된 실시형태들은 일부 경우들에 완전 광선 트레이싱된 반사들로부터 구별불가능할 수도 있는 시각적으로 만족스러운 반사들을 실현하도록 실시간 또는 근실시간 애플리케이션에 이용될 수 있다.Embodiments of the present disclosure provide systems and methods for rendering reflections. The disclosed embodiments can be performed in real time or near real time and are therefore suitable for applications, such as video games. As described in more detail herein, the disclosed embodiments utilize rasterization to render primary gazes (ie, from a virtual camera into screen space) of a 3D (three-dimensional) virtual scene. Ray progression is used to find the ray intersection for the primary reflections to add reflections for each pixel in screen space. Objects outside the viewport are curled when rendering the scene using rasterization. Thereby, ray progression may fail in various situations, such as when the ray progresses, the ray exits the viewport without intersecting any other object in the scene. In this situation where beam progression fails, the beam may be recast as a ray traced beam. Ray traced rays are cast to a full 3D scene where all objects are present (ie, the object is not curled). Ray tracing is then used to find out about the ray intersection, that is, primary reflection. The disclosed embodiments can be used in real time or near real time applications to realize visually satisfactory reflections that may in some cases be indistinguishable from fully ray traced reflections.

도면들로 돌아가서, 도 1 은 본 개시의 양태들에 따라 이미지들을 렌더링하기 위한 컴퓨터 시스템 (100) 의 블록도이다. 컴퓨터 시스템 (100) 은 예를 들어 비디오 게임의 이미지들을 렌더링하기 위해 이용될 수도 있다. 컴퓨터 시스템 (100) 은 디스플레이 (104) 및 입력/출력 (I/O) 디바이스들 (106) 에 커플링된 콘솔 (102) 을 포함하는 것으로 도시된다. 콘솔 (102) 은 프로세서 (110), 프로그램 코드 저장소 (112), 임시 데이터 저장소 (114) 및 그래픽 프로세서 (116) 를 포함하는 것으로 도시된다. 콘솔 (102) 은 핸드헬드 비디오 게임 디바이스, 비디오 게임들을 조작하기 위한 비디오 게임 콘솔 (예를 들어, 특수 목적 컴퓨팅 디바이스), 범용 랩탑 또는 데스크탑 컴퓨터, 또는 임의의 적절한 컴퓨팅 시스템, 이를 테면, 모바일 폰 또는 태블릿 컴퓨터일 수도 있다. 도 1 에는 하나의 프로세서로서 도시되어 있지만, 프로세서 (110) 는 하나 이상의 프로세싱 코어들을 갖는 하나 이상의 프로세서들을 포함할 수도 있다. 이와 유사하게, 도 1 에서는 하나의 프로세서로서 도시되어 있지만, 그래픽 프로세서 (116) 는 하나 이상의 프로세싱 코어들을 갖는 하나 이상의 프로세서들을 포함할 수도 있다.Returning to the drawings, FIG. 1 is a block diagram of a computer system 100 for rendering images in accordance with aspects of the present disclosure. Computer system 100 may be used, for example, to render images of a video game. Computer system 100 is shown to include a console 102 coupled to a display 104 and input / output (I / O) devices 106. The console 102 is shown to include a processor 110, a program code store 112, a temporary data store 114, and a graphics processor 116. The console 102 may be a handheld video game device, a video game console (eg, special purpose computing device) for operating video games, a general purpose laptop or desktop computer, or any suitable computing system, such as a mobile phone or It may also be a tablet computer. Although shown as one processor in FIG. 1, the processor 110 may include one or more processors having one or more processing cores. Similarly, although shown as one processor in FIG. 1, graphics processor 116 may include one or more processors having one or more processing cores.

프로그램 코드 저장부 (112) 는 ROM (판독 전용 메모리), RAM (랜덤 액세스 메모리), DRAM (동적 랜덤 액세스 메모리), SRAM (정적 랜덤 액세스 메모리), 하드 디스크, 다른 자기 저장부, 광학 저장부, 이러한 저장 디바이스 유형들의 조합 또는 변형일 수도 있다. 일부 실시형태들에서, 프로그램 코드의 일부분은 프로그래밍가능한 ROM (예를 들어, ROM, PROM (programmable read-only memory), EPROM (erasable programmable read-only memory), EEPROM (electrically erasable programmable read-only memory) 등) 에 저장될 수도 있고 프로그램 코드의 일부분은 탈착가능 매체, 이를 테면 디스크 (120)(예를 들어, CD-ROM, DVD-ROM 등) 상에 저장되거나, 또는 카트리지, 메모리 칩 등에 저장될 수 있거나 또는 필요에 따라 네트워크 또는 다른 전자 채널을 통해 획득될 수도 있다. 일부 구현들에서, 프로그램 코드는 비일시적 컴퓨터 판독가능 저장 매체에서 구현되는 것으로 볼 수 있다.Program code storage 112 includes ROM (read only memory), RAM (random access memory), DRAM (dynamic random access memory), SRAM (static random access memory), hard disk, other magnetic storage, optical storage, It may be a combination or variation of these storage device types. In some embodiments, a portion of the program code is programmable ROM (eg, ROM, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)). Portions of the program code may be stored on a removable medium, such as disk 120 (eg, CD-ROM, DVD-ROM, etc.) or stored on a cartridge, memory chip, or the like. Or may be obtained via a network or other electronic channel as needed. In some implementations, the program code can be viewed as being implemented in a non-transitory computer readable storage medium.

임시 데이터 저장부 (114) 는 변수들 및 다른 게임 및 프로세서 데이터를 저장하기 위해 이용가능하다. 일부 실시형태들에서, 임시 데이터 저장부 (114) 는 RAM 이고 비디오 게임의 플레이 중에 생성되는 데이터를 저장하며, 그 부분들은 프레임 버퍼, 심도 버퍼, 폴리곤 리스트들, 텍스처 저장 및/또는 비디오 게임 프리젠테이션의 부분으로서 이미지들을 렌더링하기 위해 요구되거나 이용가능한 다른 데이터를 위해 예약될 수도 있다.Temporary data storage 114 is available for storing variables and other game and processor data. In some embodiments, temporary data store 114 is RAM and stores data generated during play of a video game, the portions of which are frame buffers, depth buffers, polygon lists, texture stores, and / or video game presentations. It may be reserved for other data required or available for rendering the images as part of.

일 실시형태에서, I/O 디바이스들 (106) 은 사용자가 비디오 게임을 행하거나 콘솔 (102) 과 달리 상호 작용하기 위해 상호작용하는 디바이스이다. I/O 디바이스 (106) 는 비디오 게임 제어기, 조이스틱, 키보드, 마우스, 키패드, VR (가상 현실) 헤드셋 또는 디바이스 등을 포함하지만 이들에 제한되지 않는, 콘솔 (102) 과 상호작용하기 위한 임의의 디바이스를 포함할 수도 있다.In one embodiment, I / O devices 106 are devices that a user interacts with in order to play a video game or otherwise interact with the console 102. I / O device 106 is any device for interacting with console 102 including, but not limited to, a video game controller, joystick, keyboard, mouse, keypad, VR (virtual reality) headset or device, and the like. It may also include.

디스플레이 (104) 는 텔레비전, 컴퓨터 모니터, 랩탑 스크린, 모바일 디바이스 스크린, 태블릿 스크린 등을 포함하는 임의의 유형의 디스플레이 디바이스 일 수 있다. 일부 실시형태들에서, I/O 디바이스들 (106) 및 디스플레이 (104) 는 공통 디바이스, 예를 들어 터치 스크린 디바이스를 포함한다. 더 추가로, 일부 실시형태들에서, 하나 이상의 I/O 디바이스들 (106) 및 디스플레이 (104) 는 콘솔 (102) 에 통합된다.Display 104 may be any type of display device including a television, computer monitor, laptop screen, mobile device screen, tablet screen, and the like. In some embodiments, I / O devices 106 and display 104 include a common device, eg, a touch screen device. Still further, in some embodiments, one or more I / O devices 106 and display 104 are integrated into console 102.

여러 실시형태들에서, 비디오 게임이 디스플레이 (104) 상에 제시된 특정 이미지 시퀀스가 게임 명령 프로세싱의 결과에 의존하고, 이들 게임 명령들이 마찬가지로 이어서 사용자 입력들에 의존할 가능성이 높기 때문에, 콘솔 (102)(및 프로세서 (110) 및 그래픽 프로세서 (116)) 은 입력들을 신속하게 프로세싱하고 실시간 또는 근실시간으로 응답성 이미지 시퀀스를 렌더링하도록 구성된다.In various embodiments, the console 102 is more likely because the particular game sequence presented on the display 104 by the video game depends on the results of the game command processing and these game commands likewise rely on subsequent user inputs as well. (And processor 110 and graphics processor 116) are configured to process the inputs quickly and render the responsive image sequence in real time or near real time.

여러 다른 컴포넌트들은 콘솔 (102) 에 포함될 수 있지만, 명확하게 하기 위해 생략된다. 일 예는 콘솔 (102) 을 네트워크 이를 테면, 인터넷에 접속하도록 구성된 네트워킹 디바이스를 포함한다.Various other components may be included in console 102, but are omitted for clarity. One example includes a console device configured to connect the console 102 to a network such as the Internet.

도 2 는 일 실시형태에 따른 프로세스 및 버퍼의 상호작용을 예시하는 블록도이다. 도 2 에 도시된 바와 같이, 프로세서 (110) 는 프로그램 코드 및 프로그램 데이터를 실행한다. 프로그램 코드를 실행하는 것에 응답하여, 프로세서 (110) 는 렌더링 명령들을 그래픽 프로세서 (116) 에 출력한다. 그래픽 프로세서 (116) 는 이어서 폴리곤 버퍼 (150) 로부터 데이터를 판독하고 픽셀 버퍼(들)(160) 과 상호작용하여 디스플레이로 출력되는 하나 이상의 이미지들의 이미지 시퀀스를 형성한다. 대안적으로, 그래픽 프로세서 (116) 에 렌더링 명령들을 전송하는 대신에 또는 그래픽 프로세서 (116) 에 렌더링 명령들을 전송하는 것에 더하여, 프로세서 (110) 는 폴리곤 버퍼 (150) 와 직접 상호작용할 수도 있다. 예를 들어, 프로세서 (110) 는 어느 오브젝트들이 뷰에 나타나야 하는지를 결정할 수 있고 그래픽 프로세서 (116) 에 의한 후속 프로세싱을 위해 폴리곤 버퍼 (150) 에 이들 오브젝트들의 폴리곤 또는 다른 수학적 표현들을 제공할 수 있다.2 is a block diagram illustrating the interaction of a process and a buffer according to one embodiment. As shown in FIG. 2, the processor 110 executes program code and program data. In response to executing the program code, the processor 110 outputs rendering instructions to the graphics processor 116. Graphics processor 116 then reads data from polygon buffer 150 and interacts with pixel buffer (s) 160 to form an image sequence of one or more images output to the display. Alternatively, instead of sending rendering instructions to graphics processor 116 or in addition to sending rendering instructions to graphics processor 116, processor 110 may interact directly with polygon buffer 150. For example, processor 110 may determine which objects should appear in the view and provide polygon or other mathematical representations of these objects to polygon buffer 150 for subsequent processing by graphics processor 116.

일 예의 구현에서, 프로세서 (110) 는 그래픽 프로세서 (116) 에 하이레벨 그래픽 커맨드들을 발행한다. 일부 구현들에서, 이러한 하이레벨 그래픽 커맨드들은 OpenGL 사양에 의해 특정된 것 또는 그래픽 프로세서 제조자에 의해 특정된 것일 수도 있다.In one example implementation, processor 110 issues high level graphics commands to graphics processor 116. In some implementations, these high level graphics commands may be as specified by the OpenGL specification or as specified by the graphics processor manufacturer.

이미지 렌더링 프로세스의 일 구현에서, 그래픽 프로세서 (116) 는 폴리곤에 대한 폴리곤 버퍼 (150) 로부터 폴리곤 데이터를 판독하고, 그 폴리곤을 프로세싱하고 그에 따라 픽셀 버퍼(들)(160)를 업데이트한 다음, 모든 폴리곤들이 프로세싱될 때까지 또는 프로세싱될 필요가 있는 그리고/또는 뷰에서의 폴리곤들의 적어도 모두가 프로세싱될 때까지 다음 폴리곤으로 이동한다. 이와 같이, 폴리곤들이 제위치에서 판독될 수도 있고 유한 세트인 경우에도 렌더러는 폴리곤들의 스트림을 프로세싱하고 여기에서 폴리곤들의 수는 알려져 있거나 결정가능하다. 메모리 효율 및 속도에 대해, (랜덤 액세스 또는 다른 오더링과는 대조적으로) 폴리곤들이 스트림으로서 프로세싱되는 일부 구현들에서 바람직할 수도 있어, 프로세싱되고 있는 폴리곤들에 이용되는 고속의 메모리가 이미지를 포함하는 모든 폴리곤들에 대해 요구되지 않는다.In one implementation of the image rendering process, graphics processor 116 reads polygon data from polygon buffer 150 for the polygon, processes the polygon and updates pixel buffer (s) 160 accordingly, and then Move to the next polygon until the polygons are processed or until at least all of the polygons in the view that need to be processed and / or are processed. As such, even if the polygons may be read in place and are a finite set, the renderer processes the stream of polygons where the number of polygons is known or determinable. With regard to memory efficiency and speed, it may be desirable in some implementations in which polygons are processed as a stream (as opposed to random access or other ordering), so that the high speed memory used for the polygons being processed contains all of the images. Not required for polygons.

일부 실시형태들에서, 프로세서 (110) 는 (중첩된 폴리곤이 있는 경우가 아닌 것이 가능하다면) 정렬 순서로 폴리곤 데이터를 폴리곤 버퍼 (150) 에 로딩할 수도 있지만, 보다 일반적으로 폴리곤은 정렬되지 않은 순서로 폴리곤 버퍼 (150) 에 저장된다. 이들 예들은 프로세싱되고 있는 이미지 엘리먼트들로서 폴리곤을 이용하고 있지만, 여기에 기술된 장치들 및 방법들은 또한 폴리곤들 이외의 이미지 엘리먼트들에 또한 이용될 수 있음을 이해해야 한다.In some embodiments, the processor 110 may load the polygon data into the polygon buffer 150 in sort order (if not possible with nested polygons), but more generally the polygon is in an unordered order. Is stored in the polygon buffer 150. These examples use polygon as the image elements being processed, but it should be understood that the apparatuses and methods described herein may also be used for image elements other than polygons.

도 3 은 일 실시형태에 따라 렌더링될 장면 (300) 의 블록도이다. 장면 (300) 은 복수의 3D (3 차원) 오브젝트들 (302, 302A-302B) 을 포함한다. 각각의 오브젝트 (302) 는 삼각형들과 같은 폴리곤들의 세트로 구성될 수 있다. 카메라 (306) 는 장면 (300) 의 이미지를 캡처하도록 구성된다. 장면 (300) 의 투사는 카메라 (306) 에 의해 캡처되고 스크린 공간 (308) 에 의해 표현된다. 카메라 (306) 에 의해 캡처된 장면 (300) 의 뷰는 뷰포트 (304) 에 의해 표현된다. 도시된 바와 같이, 장면 (300) 의 오브젝트 (302A) 와 같은 오브젝트들의 일부는 뷰포트 (304) 외부에 있을 수 있다. 도시된 바와 같이, 오브젝트 (302B) 와 같은 오브젝트들의 일부는 뷰포트 (304) 외부에 부분적으로 있을 수 있다. 3 is a block diagram of a scene 300 to be rendered according to one embodiment. The scene 300 includes a plurality of 3D (three-dimensional) objects 302, 302A-302B. Each object 302 may consist of a set of polygons, such as triangles. Camera 306 is configured to capture an image of scene 300. The projection of scene 300 is captured by camera 306 and represented by screen space 308. The view of the scene 300 captured by the camera 306 is represented by the viewport 304. As shown, some of the objects, such as object 302A of scene 300, may be external to viewport 304. As shown, some of the objects, such as object 302B, may be partially outside of viewport 304.

일 실시형태에서, 디스플레이 디바이스 상에 디스플레이된 장면 (300) 의 이미지는 스크린 공간 (308) 에 대응한다. 카메라 (306) 가 볼 수 있는 장면 (300) 의 뷰 (즉, 스크린 공간 (308) 에 의해 표현된 이미지) 는 카메라 (306) 가 장면 내의 오브젝트들 (302) 에 대해 3D 공간에서 이동함에 따라 변경될 수 있다. 또한, 오브젝트들 (302) 은 장면 (300) 에서 이동할 수 있다.In one embodiment, the image of the scene 300 displayed on the display device corresponds to the screen space 308. The view of the scene 300 that the camera 306 can see (ie, the image represented by the screen space 308) changes as the camera 306 moves in 3D space with respect to the objects 302 in the scene. Can be. Also, the objects 302 can move in the scene 300.

도 4a 는 일 실시형태에 따라, 래스터화를 이용하여 장면 (400) 을 렌더링하는 것을 예시하는 블록도이다. 도 3 에 도시된 이미지와 유사하게 장면 (400) 은 복수의 오브젝트들을 포함한다. 카메라 (406) 는 스크린 공간 (408) 에 표현된 장면 (400) 의 이미지를 캡처하도록 구성된다. 카메라 (406) 는 뷰포트 (410) 를 통해 장면 (400) 을 관측한다.4A is a block diagram illustrating rendering scene 400 using rasterization, in accordance with an embodiment. Similar to the image shown in FIG. 3, scene 400 includes a plurality of objects. Camera 406 is configured to capture an image of scene 400 represented in screen space 408. Camera 406 observes scene 400 through viewport 410.

개시된 실시형태들은 스크린 공간 (408) 에서 이미지를 생성하기 위해 장면 (400) 내의 오브젝트들을 래스터화하는 것을 포함한다. 래스터화는 픽셀들을, 카메라 (406) 로부터 직접 가시적인 것으로서 렌더링하려고 노력한다. 래스터화는 렌더러 (예를 들어, 프로세서 (110) 및/또는 그래픽 프로세서 (116)) 가 장면 (400) 에 관한 어떠한 글로벌 정보도 필요로 하지 않을 때 양호한 성능을 제공할 수 있다.The disclosed embodiments include rasterizing objects in scene 400 to generate an image in screen space 408. Rasterization seeks to render the pixels as visible directly from the camera 406. Rasterization can provide good performance when the renderer (eg, processor 110 and / or graphics processor 116) does not need any global information about scene 400.

하나의 래스터화 알고리즘은 폴리곤들을 포함하는 오브젝트들로서 설명되는 3D 장면 (400) 을 취하여 장면 공간 (408) 에서 2D 표면, 통상적으로 컴퓨터 모니터 상에 장면을 렌더링한다. 폴리곤들 자체는 삼각형들의 집합으로서 표현된다. 각각의 삼각형은 3D 공간에서 3 개의 정점들로 표현된다. 매우 기본적인 레벨에서, 래스터화기는 정점들의 스트림을 취하여, 스크린 공간 (408) 에 그들을 대응하는 2D 포인트로 변환하고, 변환된 2D 삼각형들을 필요에 따라 채운다.One rasterization algorithm takes a 3D scene 400 described as objects comprising polygons and renders the scene on a 2D surface, typically a computer monitor, in scene space 408. The polygons themselves are represented as a set of triangles. Each triangle is represented by three vertices in 3D space. At a very basic level, the rasterizer takes a stream of vertices, converts them into corresponding 2D points in screen space 408, and fills the transformed 2D triangles as needed.

일반적으로 래스터화는 하나 이상의 오브젝트들 또는 부분 오브젝트들을 컬하는 것을 포함한다. 절두체 컬은 오브젝트 (402A) 와 같은 뷰포트 (410) 외부의 임의의 오브젝트들을 제거한다. 뷰포트 컬은 오브젝트 (402B) 의 부분과 같은, 뷰포트 (410) 의 에지와 부분적으로 중첩되는 오브젝트들의 부분들을 제거한다. 배면 컬은 카메라 (406) 에 의해 보여질 수 없는 오브젝트들의 후방 부분 (404) 을 제거한다. 일부 실시형태들에서, 심도 테스트는 스크린 공간 (408) 에서 픽셀 단위로 다른 오브젝트들에 의해 가려진 오브젝트들의 부분들 (406) 을 제거하도록 수행될 수 있다.In general, rasterization involves curling one or more objects or partial objects. The frustum curl removes any objects outside of viewport 410, such as object 402A. Viewport curl removes portions of objects that partially overlap with an edge of viewport 410, such as portion of object 402B. The back curl removes the back portion 404 of the objects that cannot be seen by the camera 406. In some embodiments, a depth test may be performed to remove portions 406 of objects that are obscured by other objects in pixels in screen space 408.

래스터화가 완료되면, 스크린 공간 (408) 내의 장면의 이미지가 생성된다. 일부 실시형태들에서, 스크린 공간 (408) 의 픽셀 밀도는 또한 장면 (400) 내의 오브젝트들에 관한 정보 손실을 초래할 수 있다.When rasterization is complete, an image of the scene in screen space 408 is generated. In some embodiments, pixel density of screen space 408 can also result in loss of information about objects in scene 400.

도 4b 는 일 실시형태에 따른 장면의 래스터화된 이미지의 일 예이다. 도 4b 에 도시된 이미지는 도 4a 의 카메라 (406) 에 의해 캡처된 장면 (400) 의 스크린 공간 (408) 의 이미지를 나타낸다. 4B is an example of a rasterized image of a scene according to one embodiment. The image shown in FIG. 4B represents an image of the screen space 408 of the scene 400 captured by the camera 406 of FIG. 4A.

스크린 공간 (408) 의 각각의 픽셀 (412) 에 대해, 프로세서는 픽셀 내의 오브젝트의 포지션, 오브젝트의 컬러, 오브젝트의 배향 및/또는 표면 텍스처 정보 (예를 들어, 조도 값) 등에 대응하는 데이터에 액세스한다. 따라서 래스터화의 결과는 실제 3D 장면의 비교적 제한된 정보를 갖는 2D 이미지이다. 래스터화 이미지들에 반사들을 추가하는 것은 해결하기 어려운 문제일 수 있는데 그 이유는 고품질 반사들에 필요한 정보가 뷰포트 (410) 의 외부 및/또는 부분적으로 컬된 오브젝트의 후방에 있을 수 있고 따라서, 이들 오브젝트에 대한 정보를 더 이상 렌더러에 대해 이용할 수 없기 때문이다.For each pixel 412 in screen space 408, the processor accesses data corresponding to the position of the object within the pixel, the color of the object, the orientation of the object, and / or surface texture information (eg, roughness values), and the like. do. The result of rasterization is therefore a 2D image with relatively limited information of the actual 3D scene. Adding reflections to rasterized images can be a difficult problem to solve because the information needed for high quality reflections may be outside of the viewport 410 and / or behind a partially curled object and thus these objects This is because the information about is no longer available to the renderer.

논의된 바와 같이, 반사들이 도 4b 에 도시된 이미지에 추가될 때 제한된 정보가 렌더러에 대해 이용가능하다. 래스터화된 이미지를 생성하기 위해 다양한 오브젝트들과 오브젝트들의 일부가 컬되기 때문에 컬되었던 오브젝트들 및 오브젝트들의 부분들에 대한 데이터는 더이상 이용가능하지 않고 반사들을 추가하기 위해 이용될 수 없다. 예를 들어, 오브젝트 (402A)(즉, 절두체 컬에 의해 컬되었던 오브젝트) 에 대응하는 데이터는 더이상 오브젝트 (414) 와 같이 컬되지 않은 오브젝트들에 반사를 추가하기 위해 이용가능하지 않다.As discussed, limited information is available for the renderer when reflections are added to the image shown in FIG. 4B. Since various objects and parts of the objects are curled to produce a rasterized image, the data on the objects and parts of the objects that were curled are no longer available and cannot be used to add reflections. For example, data corresponding to object 402A (ie, an object that was curled by frustum curl) is no longer available to add reflection to uncurled objects, such as object 414.

도 5 는 일 실시형태에 따른 상이한 반사 유형들을 예시하는 일 예의 이미지이다. 일부 실시형태들에서, 반사들은 거울반사 또는 글로시 반사로 분류될 수 있다. 이미지의 하부 우측 부분 (502) 은 거울 반사를 나타내고, 이미지의 상부 좌측 부분 (504) 은 글로시 반사를 나타낸다. 5 is an example image illustrating different reflection types according to one embodiment. In some embodiments, the reflections can be classified as mirror reflection or glossy reflection. The lower right portion 502 of the image represents mirror reflections, and the upper left portion 504 of the image represents glossy reflections.

반사는 반사를 형성하는 표면의 조도 (또는 매끄러움) 에 기초하여 거울 반사성 또는 글로시일 수 있다. 본원에 이용된 바와 같이, 거울 반사는 매끄러운 표면으로부터의 미러유형 반사를 지칭하는 한편; 글로시 반사는 복수의 마이크로패싯들을 포함하는 표면으로부터 반사하는 광의 평행 광선들로부터 발생하며, 반사된 광선들은 관찰자 또는 카메라를 향한 다양한 방향들로 마이크로패싯들을 반사 또는 바운스오프한다.The reflection can be mirror reflective or glossy based on the roughness (or smoothness) of the surface forming the reflection. As used herein, mirror reflection refers to mirror type reflection from a smooth surface; Glossy reflection arises from parallel rays of light that reflect from a surface comprising a plurality of microfacets, which reflect or bounce off the microfacets in various directions towards the viewer or camera.

도 6 는 일 실시형태에 따른 거울반사들 (specular reflections) 을 예시하는 블록도이다. 표면 (600) 은 편평하고 매끄러운 표면을 갖는다. 입사 평행 광선 (602) 은 반사된 광선들 (604) 로서 표면 (600) 으로부터 반사한다. 표면 (600) 은 매끄러운 면을 갖기 때문에, 반사 광선들 (604) 도 또한 입사 광선들 (602) 과 같이 평행하다. 그 결과 표면으로부터의 미러유형 반사가 된다.6 is a block diagram illustrating specular reflections in accordance with an embodiment. Surface 600 has a flat and smooth surface. Incident parallel light ray 602 reflects from surface 600 as reflected light rays 604. Since the surface 600 has a smooth surface, the reflected rays 604 are also parallel, like the incident rays 602. The result is mirror type reflections from the surface.

도 7 은 일 실시형태에 따른 글리시 반사들을 예시하는 블록도이다. 표면 (700) 은 매끄럽지 않고 복수의 마이크로패싯 (706)(예를 들어, 랜덤 배향들을 갖는 반사 표면들) 을 포함한다. 입사 평행 광선 (702) 은 반사된 광선들 (704) 로서 표면 (700) 으로부터 반사한다. 표면 (700) 이 매끄럽지 않기 때문에, 반사된 광선들 (704) 은 관찰자 또는 카메라 (708) 를 향해 복수의 방향들로 마이크로패싯들 (706) 로부터 반사한다. 따라서, 글로시 반사들은 관찰자 또는 카메라 (708) 가 볼 때 블러링된 효과를 갖는다.7 is a block diagram illustrating glycine reflections in accordance with an embodiment. Surface 700 is not smooth and includes a plurality of microfacets 706 (eg, reflective surfaces with random orientations). Incident parallel light ray 702 reflects from surface 700 as reflected light rays 704. Because the surface 700 is not smooth, the reflected rays 704 reflect from the microfacets 706 in a plurality of directions towards the viewer or camera 708. Thus, glossy reflections have a blurred effect when the viewer or camera 708 sees.

본원에 개시된 바와 같이, 반사들은 인접 오브젝트들로부터의 오브젝트들 상에 형성될 수 있다. 일 실시형태에서, 한 오브젝트의 다른 오브젝트 상으로의 반사를 결정하기 위한 기술은 광선 진행 (ray marching) 으로서 지칭된다. 아래에 설명된 바와 같이 광선 진행은 광선 진행 성공 또는 광선 진행 실패를 초래할 수 있다.As disclosed herein, reflections may be formed on objects from adjacent objects. In one embodiment, the technique for determining reflection of one object onto another object is referred to as ray marching. As described below, the ray propagation may result in the ray propagation success or the ray propagation failure.

도 8a 는 일 실시형태에 따라 광선 진행 성공을 예시하는 블록도이다. 스크린 공간 (808) 에서의 이미지는 도 8b 에 도시된다. 스크린 공간 (808) 에서의 이미지의 각각의 픽셀에 대해, 프로세서는 오브젝트가 픽셀에 도시되어 있는지의 여부를 결정한다. 주어진 픽셀에 대해 가시적인 오브젝트는 도 8a 에 시선 (814) 으로서 도시된다. 픽셀 (804) 과 같은 일부 픽셀들은 배경 (예를 들어, 하늘) 을 도시할 수 있으며, 따라서 어떠한 오브젝트도 도시하지 않을 수도 있다. 일부 실시형태들에서, 광선 진행은 픽셀 (804) 과 같은 임의의 배경 픽셀들에 대해 생략된다.8A is a block diagram illustrating light propagation success in accordance with an embodiment. The image in screen space 808 is shown in FIG. 8B. For each pixel of the image in screen space 808, the processor determines whether an object is shown in the pixel. Objects that are visible to a given pixel are shown as line of sight 814 in FIG. 8A. Some pixels, such as pixel 804, may show a background (eg, sky), and thus may not show any object. In some embodiments, ray propagation is omitted for any background pixels, such as pixel 804.

일 실시형태에서, 픽셀 (802) 과 같이 오브젝트가 디스플레이되는 스크린 공간 (808) 에서의 이미지의 각각의 픽셀에 대해, 광선 진행이 수행된다. 위에 논의된 바와 같이, 픽셀 (802) 에 도시된 오브젝트에 대해, 프로세서는 픽셀 (802) 내의 오브젝트의 포지션, 오브젝트의 컬러, 오브젝트의 배향, 및/또는 표면 텍스처 정보 (예를 들어, 표면 조도 값) 등에 대응하는 데이터로의 액세스를 갖는다. 이 오브젝트에 대한 데이터에 기초하여, 하나 이상의 광선들은 픽셀 (802) 에서 도시될 반사들의 컬러를 결정하도록 진행될 수도 있다. In one embodiment, ray progression is performed for each pixel of the image in screen space 808 where the object is displayed, such as pixel 802. As discussed above, for an object shown in pixel 802, the processor may determine the position of the object, the color of the object, the orientation of the object, and / or surface texture information (eg, surface roughness values) in pixel 802. Access to data corresponding to the " Based on the data for this object, one or more light rays may proceed to determine the color of the reflections to be shown at pixel 802.

일부 구현들에서, 매끄러운 표면들에 대해, 하나의 광선이 픽셀 (802) 로부터 진행된다. 논의된 바와 같이, 매끄러운 표면 결과는 거울 반사들이며, 여기에서 반사된 광은 평행 광선을 형성한다. 따라서 단 하나의 광선만이, 매끄러운 표면들에 대한 반사 정보를 결정하기 위해 필요하게 된다. 그러나, 반사된 광이 다양한 방향들로 진행하는 광선들을 형성하는 더 거친 표면에 대해, 다수의 광선들이 반사 정보를 결정하기 위해 이용된다. 일부 구현들에서, 픽셀에 대해 진행된 광선들의 수는 더 거친 표면에 대해 증가한다. 일부 구현들에서, 진행되는 광선들의 수는 예를 들어 4 개의 광선들과 같이 프레임 당 광선 한계값으로 제한될 수 있다. 도 8a 및 도 8b 에 도시된 예에서, 명료화를 위하여 하나의 광선이 도시되어 있지만, 다수의 광선들이 여러 방향들로 (즉, 글로시 반사들을 위해) 픽셀 (802) 로부터 진행될 수도 있다.In some implementations, for smooth surfaces, one ray travels from the pixel 802. As discussed, the smooth surface result is mirror reflections, where the reflected light forms parallel rays. Thus only one ray of light is needed to determine reflection information for smooth surfaces. However, for a rougher surface on which reflected light forms light rays traveling in various directions, multiple light rays are used to determine the reflection information. In some implementations, the number of rays propagated for the pixel increases for a rougher surface. In some implementations, the number of propagating rays may be limited to a ray threshold per frame, such as four rays. In the example shown in FIGS. 8A and 8B, one ray is shown for clarity, but multiple rays may travel from pixel 802 in several directions (ie, for glossy reflections).

도 8a 및 도 8b 에 도시된 바와 같이, 장면 내의 오브젝트 상의 포인트 (810) 는 픽셀 (802) 에 대응한다. 포인트 (810) 에서의 오브젝트 상의 표면 배향에 기초하여, 프라이머리 반사 광선 (806) 의 방향이 결정될 수 있다. 광선 (806) 은 포인트 (810) 에서 오브젝트 상의 표면 배향에 기초하여 그 방향으로 캐스트된다. 일 구현에서, 광선 (806) 은 광선 (806) 이 스크린 공간 (808) 에서 이미지의 다른 오브젝트와 교차하는지의 여부를 결정하기 위해 스크린 공간 (808) 의 이미지를 통해 픽셀 단위로 "진행"한다. 주어진 픽셀에서의 광선 (806) 의 심도 (z 값) 에 비교되는, 주어진 픽셀에서의 오브젝트의 심도 값 (소위 "z 값") 을 조사하는 것에 의해 교차부가 결정될 수 있다. 도시된 바와 같이, 광선 (806) 은 포인트 (812) 에서 다른 오브젝트와 교차하며, 이 포인트는 도시된 예의 이미지에서 4 픽셀 떨어져 있다. 광선 (806) 의 광선 진행은 스크린 공간 (808) 내의 다른 오브젝트가 광선 (806) 에 의해 교차되기 때문에 "광선 진행 성공"을 가져온다. 포인트 (812) 로부터의 컬러 정보는 픽셀 (802) 에 디스플레이된 반사의 컬러를 연산하기 위해 버퍼에 저장될 수 있다. 설명된 바와 같이, 다수의 광선들은 포인트 (810) 에서의 표면 조도에 기초하여 여러 방향들로 포인트 (810) 로부터 캐스트될 수 있다. 광선 진행된 광선들에 의해 교차되는 오브젝트의 컬러 정보는 광선 진행 성공을 가져오는 각각의 광선에 대해 저장되고 픽셀 (802) 에서 최종 반사 정보를 형성하도록 어그리게이션될 수 있다.As shown in FIGS. 8A and 8B, the point 810 on the object in the scene corresponds to the pixel 802. Based on the surface orientation on the object at point 810, the direction of the primary reflected light ray 806 can be determined. Ray 806 is cast in that direction based on the surface orientation on the object at point 810. In one implementation, ray 806 "goes" pixel by pixel through the image of screen space 808 to determine whether ray 806 intersects another object of the image in screen space 808. The intersection can be determined by examining the depth value (so-called "z value") of the object at the given pixel, compared to the depth (z value) of the ray 806 at the given pixel. As shown, ray 806 intersects another object at point 812, which is 4 pixels away from the example image shown. Ray progression of ray 806 results in "ray progression success" because other objects in screen space 808 are intersected by ray 806. Color information from point 812 may be stored in a buffer to compute the color of the reflection displayed at pixel 802. As described, multiple light rays can be cast from point 810 in several directions based on surface roughness at point 810. Color information of the object intersected by the ray propagated rays may be stored for each ray resulting in ray propagation success and aggregated to form final reflection information at pixel 802.

그러나 진행된 일부 광선들은 "광선 진행 실패"로서 지칭되는, 뷰포트의 에지부에 도달하기 전에 스크린 공간 (808) 에서의 이미지의 어떤 오브젝트들과도 교차하지 않을 수도 있다. 도 9a 는 일 실시형태에 따라 광선 진행 실패를 예시하는 블록도이다. 장면의 스크린 공간 (908) 내의 이미지가 도 9b 에 도시된다.However, some advanced rays may not intersect any objects of the image in screen space 808 before reaching the edge of the viewport, referred to as "ray progress failure". 9A is a block diagram illustrating light propagation failure, according to one embodiment. An image in the screen space 908 of the scene is shown in FIG. 9B.

도시된 바와 같이, 픽셀 (902) 에서, 오브젝트 상의 포인트 (910) 가 디스플레이된다. 포인트 (910) 에서의 표면 배향 (및/또는 표면 조도) 에 기초하여, 하나 이상의 광선들이 포인트 (910) 로부터 진행된다. 명확성을 위해 하나의 광선 (906) 이 도시되어 있다. 광선 (906) 의 방향은 포인트 (910) 에서의 표면 배향에 기초한다. 광선 (906) 은 스크린 공간 (908) 을 통해 픽셀 단위로 진행한다. 그러나, 광선 (906) 은 임의의 다른 오브젝트들과 교차하지 않고 뷰포트 (912) 의 에지부에 도달한다. 이것은 광선 진행 실패로 간주된다. 광선 진행 실패가 발생할 때, 광선 진행된 광선 (906) 에 기초하여 포인트 (910)에 대해 어떠한 반사에 대한 컬러 정보도 획득되지 않는다. 이미지에서 발생하는 광선 진행 실패들의 수 및/또는 백분율은 장면의 복잡도, 장면에서의 오브젝트들의 배열, 및 장면 공간 이미지의 픽셀들에서 오브젝트들의 표면 배향들에 따를 수도 있다.As shown, at pixel 902, a point 910 on the object is displayed. Based on the surface orientation (and / or surface roughness) at point 910, one or more light rays travel from point 910. One ray 906 is shown for clarity. The direction of light ray 906 is based on the surface orientation at point 910. Ray 906 travels pixel by pixel through screen space 908. However, ray 906 reaches the edge of viewport 912 without intersecting with any other objects. This is considered to be a ray progression failure. When a ray propagation failure occurs, no color information for any reflection is obtained for point 910 based on the ray propagated ray 906. The number and / or percentage of ray propagation failures occurring in an image may depend on the complexity of the scene, the arrangement of the objects in the scene, and the surface orientations of the objects in the pixels of the scene space image.

광선 진행을 수행하기 위한 일 실시형태는 다른 오브젝트가 교차되거나 (즉, 광선 진행 성공, 도 8b) 또는 뷰포트의 에지부에 도달할 때까지 (즉, 광선 진행 실패, 도 9b) 픽셀 단위로 스크린 공간 이미지를 횡단하는 것을 포함한다. 최적화된 광선 진행을 수행하기 위한 다른 실시형태는 도 10a 내지 도 10d 및 도 11 에 설명된다.One embodiment for performing ray propagation is screen space in pixels until another object intersects (ie, ray propagation success, FIG. 8B) or reaches an edge of the viewport (ie, ray propagation failure, FIG. 9B). It involves traversing the image. Another embodiment for performing optimized ray propagation is described in FIGS. 10A-10D and 11.

일부 실시형태들에서, 스크린 공간 내의 이미지에 대해, z-버퍼가 생성될 수 있다. z-버퍼는 스크린 공간의 이미지에서 각각의 픽셀에 대해 장면의 (카메라 포지션에 대한) 최인접 오브젝트의 심도 값을 저장한다. 주어진 픽셀에 대해 스크린 공간에 도시된 오브젝트들이 없는 경우 z 버퍼는 해당 픽셀에 대해 null 값을 저장할 수 있다.In some embodiments, for an image in screen space, a z-buffer can be generated. The z-buffer stores the depth value of the nearest object (relative to the camera position) of the scene for each pixel in the image in screen space. If no objects are shown in screen space for a given pixel, the z buffer can store a null value for that pixel.

또한, z 버퍼의 N 개의 추가적인 대략적 표현들이 연산될 수도 있다. 수 N 은 구성가능하다. 예를 들어, N 은 5 일 수도 있다. z-버퍼의 각각의 더 거친 레벨 표현에서 픽셀들은 2 의 거듭제곱 그룹들 (즉, 2 픽셀, 4 픽셀, 8 픽셀, 16 픽셀 등) 로 축소되거나 또는 더 미세한 레벨로 상대적으로 축소될 수 있다. 일 구현에서, z-값들의 세트를 하나의 z-값으로 다운스케일링하는 것은 다운스케일링된 z-값을 다운스케일된 z-값들의 세트 중 최소 z-값으로 설정하는 것에 의해 수행된다.In addition, N additional coarse representations of the z buffer may be computed. The number N is configurable. For example, N may be five. In each coarser level representation of the z-buffer the pixels can be reduced to power groups of two (ie 2 pixels, 4 pixels, 8 pixels, 16 pixels, etc.) or reduced to a finer level. In one implementation, downscaling a set of z-values to one z-value is performed by setting the downscaled z-value to the minimum z-value of the set of downscaled z-values.

최적화된 광선 진행을 수행하기 위한 일 실시형태가 본원에 설명된다. 설명된 바와 같이, 프로세서는 원점 픽셀로부터 캐스트된 광선이 광선 방향으로 이웃 픽셀 내의 다른 오브젝트와 교차하는지의 여부를 결정하기 위해 풀 사이즈 (오리지널) z-버퍼를 조사한다. 그렇지 않으면 프로세서는 다음의 더 거친 Z 버퍼 레벨에서 대응 픽셀 위치를 조사한다. 다음 더 거친 z-버퍼 레벨에서 광선 방향에서의 다음 "픽셀"을 조사하여 교차부에 대해 체크한다. 다시 말하면, 더 거친 z-버퍼는 복수의 픽셀들을 표현하기 때문에 더 거친 z-버퍼에서 하나의 "픽셀"을 진행시키는 것은 오리지널 이미지의 다수의 픽셀들에 걸쳐 진행 또는 "점핑"에 대응한다. 더 거친 z-버퍼의 다음 픽셀에서 교차부가 찾아지지 않으면 다음 거친 z-버퍼가 선택되어 조사된다. 가장 거친 z-버퍼 (예를 들어, N번째 z-버퍼) 가 이미 선택되어 있으면 통상적인 광선이 픽셀 단위로 진행하여 (가장 거친 z-버퍼에서) 교차부를 검색한다.One embodiment for performing optimized ray propagation is described herein. As described, the processor examines the full size (original) z-buffer to determine whether the light beam cast from the origin pixel intersects another object in the neighboring pixel in the light direction. Otherwise, the processor examines the corresponding pixel position at the next coarser Z buffer level. Check for intersection by examining the next "pixel" in the ray direction at the next coarser z-buffer level. In other words, advancing one "pixel" in the coarser z-buffer corresponds to advancing or "jumping" over multiple pixels of the original image because the coarser z-buffer represents a plurality of pixels. If no intersection is found at the next pixel of the coarser z-buffer, the next coarse z-buffer is selected and examined. If the coarsest z-buffer (e.g., the Nth z-buffer) is already selected, the normal ray advances pixel by pixel to search for the intersection (in the coarsest z-buffer).

더 거친 z-버퍼들 중 하나에서 교차부가 찾아지면, 프로세서는 "레벨 올리기"를 수행하고 다음 더 미세한 z-버퍼에서 교차부의 픽셀 위치를 조사하고 광선은 다음 더 미세한 z-버퍼에서 광선 방향으로 진행한다. 이 방식으로, 교차부가 찾아내지면, 프로세서는 다음 더 미세한 z 버퍼로 업 스케일링하고 광선 진행을 계속한다. 프로세서가 어떠한 것도 동작시키지 않고 광선 방향으로 (z-버퍼의 적절한 레벨에서) 스텝핑할 때마다 프로세서는 다음 더 거친 z-버퍼로 다운스케일링하여 스크린 상의 더 큰 영역들을 잠재적으로 화면의 더 큰 영역을 잠재적으로 건너 뛴다. 교차부가 있자 마자, 프로세서는 다음 더 미세한 z-버퍼로 업스케일링하여 데이터를 리파이닝한 다음 다시 광선 진행으로 돌아간다. 프로세서가 가장 미세한 레벨에서 어떤것과 교차하는 것으로 이르게 되면, 프로세스는 교차 포인트가 찾아질 때 완료된다.If an intersection is found in one of the coarser z-buffers, the processor performs a "level up" and examines the pixel position of the intersection in the next finer z-buffer and the ray travels in the light direction in the next finer z-buffer. do. In this way, once the intersection is found, the processor upscales to the next finer z buffer and continues with the ray propagation. Each time the processor steps in the radial direction (at the proper level of the z-buffer) without operating anything, the processor downscales to the next coarser z-buffer, potentially making larger areas on the screen potentially larger areas of the screen. Skip to As soon as there is an intersection, the processor upscales to the next finer z-buffer to refine the data and then back to ray progression. When the processor reaches an intersection with something at the finest level, the process is completed when an intersection point is found.

도 10a 는 일 실시형태에 따른 z-버퍼의 일부분의 그래픽 표현이다. 도 10a 에서, 심도 값들 (즉, z 값들) 은 수직방향 축에 도시되며, 카메라에 더 가까운 오브젝트들을 갖는 픽셀들은 더 큰 히스토그램 막대로 표시되고, 카메라로부터 더 멀리 있는 오브젝트들을 갖는 픽셀들은 더 작은 히스토그램 막대로 도시된다. 픽셀 위치 (1002) 에 대해, 광선 (1004) 은 픽셀 위치 (1002) 에서의 표면 배향에 기초하여 특정 방향으로 진행될 수 있다. 도 10a 에 도시된 히스토그램 막대들은 스크린 공간에서 광선 (1004) 의 방향으로 픽셀들의 z-값들을 표현한다.10A is a graphical representation of a portion of a z-buffer according to one embodiment. In FIG. 10A, depth values (ie, z values) are shown on the vertical axis, pixels with objects closer to the camera are represented by larger histogram bars, and pixels with objects further away from the camera are smaller histograms. It is shown by a bar. For pixel location 1002, ray 1004 may travel in a particular direction based on the surface orientation at pixel location 1002. The histogram bars shown in FIG. 10A represent z-values of the pixels in the direction of ray 1004 in screen space.

최적화된 광선 진행을 수행하기 위해, 스크린 공간에서의 오브젝트들의 심도 값들의 z-버퍼는 프로세서에 의해 액세스된다. 다운스케일링된 z-버퍼의 그래픽 표현은 도 10b 에 도시된다. 도 10a 및 10b 를 참조하여 보면, 도 10a 에서의 z-값들 (1010A 및 1010B) 은 도 10b 에서의 z-값 (1010C) 으로 다운스케일링되었다. 이와 유사하게, 도 10a 에서의 z-값들 (1012A 및 1012B) 은 도 10b 에서의 z-값 (1012C) 으로 다운스케일링되었다. 도 10a 에서 다음 픽셀에서 교차부가 찾아지지 않았기 때문에, 프로세서는 도 10b 에 도시된 것과 같이 다음 더 거친 z-버퍼를 조사한다. 도 10b 에서, 프로세서는 광선 (1004) 이 이웃 픽셀의 z-버퍼와 교차하는지의 여부를 다시 결정한다. 그렇지 않으면, 프로세서는 도 10c 에 도시된 바와 같이 다음 더 거친 z-버퍼를 조사한다.In order to perform optimized ray propagation, the z-buffer of the depth values of the objects in screen space is accessed by the processor. The graphical representation of the downscaled z-buffer is shown in FIG. 10B. Referring to FIGS. 10A and 10B, the z-values 1010A and 1010B in FIG. 10A have been downscaled to the z-value 1010C in FIG. 10B. Similarly, the z-values 1012A and 1012B in FIG. 10A have been downscaled to the z-value 1012C in FIG. 10B. Since no intersection was found at the next pixel in FIG. 10A, the processor examines the next coarser z-buffer as shown in FIG. 10B. In FIG. 10B, the processor again determines whether ray 1004 intersects the z-buffer of the neighboring pixel. Otherwise, the processor examines the next coarser z-buffer as shown in FIG. 10C.

추가로 다운스케일링된 z-버퍼의 그래픽 표현은 도 10c 에 도시된다. 도 10b 및 10c 를 참조하여 보면, 도 10b 에서의 z-값들 (1010C 및 1012C) 은 도 10c 에서의 z-값 (1020) 으로 다운스케일링되었다. 다시, 광선 (1004) 은 광선 (1004) 이 추가로 다운스케일링된 z-버퍼에서의 이웃 픽셀의 z-버퍼와 교차하는지의 여부를 결정하기 위해 테스트된다. 일 실시형태에서, 이 프로세스는 광선이 이웃 다운스케일링된 z 값에 교차할 때까지 또는 뷰포트의 에지부에 도달할 때까지 반복된다. 일 실시형태에서, 가장 거친 z-버퍼에 도달하면, 광선은 교차부가 찾아지는지의 여부를 결정하기 위해 가장 다운스케일된 z-버퍼 공간에서 "픽셀 단위"로 캐스트될 수 있다.Further graphical representation of the downscaled z-buffer is shown in FIG. 10C. Referring to FIGS. 10B and 10C, the z-values 1010C and 1012C in FIG. 10B have been downscaled to the z-value 1020 in FIG. 10C. Again, ray 1004 is tested to determine whether ray 1004 intersects the z-buffer of neighboring pixels in the further downscaled z-buffer. In one embodiment, this process is repeated until the ray intersects the neighboring downscaled z value or until it reaches the edge of the viewport. In one embodiment, once the roughest z-buffer is reached, the light beam may be cast "pixel by pixel" in the most downscaled z-buffer space to determine whether an intersection is found.

더 추가로 콜랍스된 z-버퍼의 그래픽 표현이 도 10d 에 도시된다. 도 10d 에 도시된 바와 같이, 광선은 다운스케일링된 z-버퍼 내의 다른 z-버퍼 값과 교차한다. 이것은 광선 진행 성공을 표시한다.  A further graphical representation of the collapsing z-buffer is shown in FIG. 10D. As shown in FIG. 10D, the ray intersects another z-buffer value in the downscaled z-buffer. This indicates the ray progression success.

이 스테이지에서 프로세서는 다음의 더 미세한 z-버퍼 ("레벨을 낮추기") 를 선택하고 다음의 더 미세한 z-버퍼의 픽셀을 식별한다. 그 후, 광선 진행은 교차부에 대해 검색하기 위해 다음의 더 미세한 레벨 상에서 행해진다. 이러한 방식으로, 광선 진행은 더 거친 z-버퍼 데이터를 이용하여 더 큰 스텝을 취함으로써 빈 공간을 효율적으로 이동할 수 있다.At this stage the processor selects the next finer z-buffer ("lower level") and identifies the next finer z-buffered pixel. The ray propagation is then done on the next finer level to search for intersections. In this way, the ray propagation can efficiently move the empty space by taking larger steps using coarser z-buffer data.

도 11 은 일 실시형태에 따른 광선 진행을 수행하기 위한 방법 단계들의 플로우 다이어그램이다. 일부 구현들에서, 스크린 공간 래스터화를 이용하여 장면의 2D 이미지가 생성될 수 있다. 2D 이미지의 각각의 픽셀에 대해 픽셀에 도시된 오브젝트의 심도에 대응하는 z-값은 z-버퍼에 저장될 수 있다.11 is a flow diagram of method steps for performing ray propagation in accordance with an embodiment. In some implementations, 2D images of the scene can be generated using screen space rasterization. For each pixel of the 2D image a z-value corresponding to the depth of the object shown in the pixel may be stored in the z-buffer.

단계 1102 에서, 프로세서는 이미지 내의 오브젝트들의 심도 값들에 대응하는 z-버퍼 데이터를 수신한다. z-버퍼 데이터는 풀 z-버퍼 또는 z-버퍼의 부분을 포함할 수도 있다. 단계 1104 에서, 프로세서는 z-버퍼 데이터의 N 개의 스케일링된 버전을 수신한다. z-버퍼 데이터의 각각의 다운스케일링된 버전은 둘 이상의 픽셀들로부터의 심도 정보를 결합할 수도 있다. 일부 구현들에서, z-버퍼 데이터의 다운스케일링된 버전은 다운스케일링될 z-값들의 세트에 대한 최소 심도 값을 취한다.In step 1102, the processor receives z-buffer data corresponding to depth values of the objects in the image. The z-buffer data may comprise a full z-buffer or part of a z-buffer. In step 1104, the processor receives N scaled versions of z-buffer data. Each downscaled version of z-buffer data may combine depth information from two or more pixels. In some implementations, the downscaled version of the z-buffer data takes the minimum depth value for the set of z-values to be downscaled.

광선 진행이 수행되는 주어진 픽셀에 대해, 단계 1106 에서, 프로세서는 광선 진행에 대한 광선 방향을 결정한다. 단계 1108 에서, 프로세서는 광선의 방향에서 광선 방향의 z-버퍼 데이터에서 (초기에 풀-사이즈 버퍼 레벨인 현재 레벨에서) 의 다음의 픽셀 위치가 다음의 픽셀 위치에서의 z 값에 기초하여 다른 오브젝트와 교차하는지의 여부를 결정한다. 교차부가 찾아내지지 않으면, 프로세서는 단계 1110 에서, 현재 레벨이 가장 거친 z-버퍼 레벨인지의 여부를 결정한다. 예이면, 방법은 단계 1108 로 리턴하고 여기에서 프로세서 광선은 현재 레벨에서 다음 픽셀로 진행한다. 단계 1110 에서 프로세서가 현재 레벨이 가장 거친 z-버퍼 레벨이 아니라고 결정하면, 그 후, 단계 1112 에서 프로세서는 픽셀에 대응하는 다음 거친 z-버퍼에서 픽셀 위치를 찾는다 (즉, "레벨을 올리기"). 그 다음, 방법은 단계 1108 로 리턴하며, 여기에서 프로세서 광선은 (다음의 더 거친 레벨로 단지 다운스케일링되었던) 현재의 레벨에서 다음 픽셀로 진행한다. For a given pixel on which ray propagation is performed, at step 1106, the processor determines the ray direction for the ray propagation. In step 1108, the processor determines that the next pixel position of the z-buffer data in the ray direction in the ray direction (at the current level initially at the full-size buffer level) is different based on the z value at the next pixel position. Determine whether or not to intersect with. If no intersection is found, the processor determines in step 1110 whether the current level is the coarse z-buffer level. If yes, the method returns to step 1108 where the processor beam advances to the next pixel at the current level. If at step 1110 the processor determines that the current level is not the coarse z-buffer level, then at step 1112 the processor looks for the pixel position in the next coarse z-buffer corresponding to the pixel (ie, "raising the level"). . The method then returns to step 1108, where the processor beam proceeds to the next pixel at the current level (which was only downscaled to the next coarser level).

단계 1108 에서 프로세서가 다음 픽셀 위치에서 교차부을 찾으면, 단계 1114 에서 프로세서는 현재 레벨이 오리지널 (풀 사이즈) z-버퍼 레벨인지의 여부를 결정한다. 예라면, 단계 1118 에서, 프로세서는 교차점에 대한 z-버퍼 정보 (즉, 광선 진행 성공) 에 기초하여 광선에 대한 교차부 정보를 결정한다. If at step 1108 the processor finds an intersection at the next pixel location, at step 1114 the processor determines whether the current level is the original (full size) z-buffer level. If yes, at step 1118, the processor determines the intersection information for the ray based on the z-buffer information (ie, ray propagation success) for the intersection.

단계 1114 에서 프로세서가 현재 레벨이 오리지널 (풀 사이즈) z-버퍼 레벨이 아니라고 결정하면, 단계 1116 에서 프로세서는 픽셀에 대응하는 다음의 더 미세한 z-버퍼에서 픽셀 위치를 찾는다 (즉, "레벨을 낮추기"). 그 후, 방법은 단계 1108 로 리턴하고, 여기에서, 프로세서 광선은 (다음의 더 미세한 레벨로 업스케일링되었던) 현재의 레벨에서 다음 픽셀로 진행한다. If in step 1114 the processor determines that the current level is not the original (full size) z-buffer level, in step 1116 the processor looks for the pixel position in the next finer z-buffer that corresponds to the pixel (ie, "lowering the level"). "). The method then returns to step 1108, where the processor beam proceeds to the next pixel at the current level (which was upscaled to the next finer level).

이와 같이, 도 11 의 방법은 최적화된 광선 진행 기술을 제공하며, 여기에서, 큰 빈 공간들이 픽셀 단위로 스크린 공간을 조사하는 것보다 더 빨리 통과할 수 있다.As such, the method of FIG. 11 provides an optimized ray propagation technique, where large empty spaces can pass faster than irradiating screen space pixel by pixel.

그러나, 도 9a 및 도 9b 에서 위에 설명된 바와 같이, 일부 경우들에서, 광선 진행은 광선 진행 실패를 초래한다. 본 개시의 일 실시형태는 광선 진행 실패를 갖는 광선 트레이싱된 광선을 제공한다.However, as described above in FIGS. 9A and 9B, in some cases, the light propagation results in a light propagation failure. One embodiment of the present disclosure provides a ray traced ray with ray propagation failure.

도 12 는 일 실시형태에 따라 광선 진행을 실패한 광선들에 대한 광선 트레이싱을 수행하는 것을 예시하는 블록도이다. 도시된 바와 같이, 스크린 공간 이미지의 주어진 픽셀은 3D 장면의 포인트 (1202) 에 대응한다. 포인트 (1202) 는 도 12 의 예에서 장면의 바닥면이 될 것으로 발생하는 오브젝트 상에 위치된다. 광선 (1204) 은 포인트 (1202) 로부터 진행되는 광선이며; 광선 (1204) 이 임의의 다른 오브젝트들과도 교차하지 않고 뷰포트 (1212) 의 에지부에 도달하기 때문에, 광선 (1204) 은 광선 진행 실패를 초래한다.12 is a block diagram illustrating performing ray tracing on rays that failed to propagate rays in accordance with one embodiment. As shown, a given pixel of the screen space image corresponds to point 1202 of the 3D scene. Point 1202 is located on the object that occurs in the example of FIG. 12 to be the bottom surface of the scene. Light ray 1204 is a light ray traveling from point 1202; Because ray 1204 reaches the edge of viewport 1212 without intersecting with any other objects, ray 1204 results in a ray propagation failure.

본 발명의 실시형태들에 따르면, 광선 (1208) 은 광선 진행이 뷰포트 (1212) 의 에지부에 도달한 포인트인 포인트 (1206) 에서 시작하여 트레이싱된 광선일 수 있다. 일부 경우, 광선 트레이싱된 광선 (1208) 은 오브젝트 (1210) 와 같은 오브젝트와 교차한다. 광선 트레이싱된 광선 (1208) 이 오브젝트 (1210) 와 교차하는 포인트 (1214) 로부터의 컬러 정보는 포인트 (1202) 와 연관된 픽셀에서 반사의 컬러를 연산하기 위해 버퍼에 저장될 수 있다. 광선 트레이싱된 광선 (1208) 이 장면 (도시되지 않음) 의 바운딩 박스에 도달하면, 광선 트레이싱된 광선 (1208) 은 폐기되고 광선 (1208) 에 기초하여 포인트 (1202) 와 연관된 픽셀에 대한 어떠한 컬러 정보도 얻을 수 없다.According to embodiments of the present invention, ray 1208 may be a ray traced starting at point 1206, the point at which ray propagation reached the edge of viewport 1212. In some cases, ray traced ray 1208 intersects an object, such as object 1210. Color information from point 1214 where ray traced ray 1208 intersects object 1210 may be stored in a buffer to compute the color of the reflection at the pixel associated with point 1202. When ray traced ray 1208 reaches the bounding box of the scene (not shown), ray traced ray 1208 is discarded and any color information for the pixel associated with point 1202 based on ray 1208. Can not even get.

도 13 은 일 실시형태에 따른 반사들을 렌더링하기 위한 방법 단계들의 플로우 다이어그램이다. 도 13 의 방법은 하이브리드 광선 진행 및 광선 트레이싱 기술을 제공하며, 여기에서 광선 진행이 스크린 공간에서 가능한 교차부을 찾기 위해 처음 이용된다. 광선 진행이 실패할 때 광선 트레이싱이 이용된다.13 is a flow diagram of method steps for rendering reflections in accordance with an embodiment. The method of FIG. 13 provides a hybrid ray propagation and ray tracing technique, where the ray propagation is first used to find possible intersections in screen space. Ray tracing is used when ray propagation fails.

단계 1302 에서, 프로세서는 스크린 공간에서 픽셀을 선택한다. 도 13 의 프로세서는 도 1 의 프로세서 (110) 및 그래픽 프로세서 (116) 중 하나 또는 조합일 수 있다. 일 실시형태에서, 스크린 공간 래스터화는 스크린 공간에서 장면의 2D 이미지를 생성하기 위해 이용될 수 있다. 도 13 에서의 방법은 스크린 공간 이미지의 픽셀들에 반사들을 추가하기 위해 이용된다. 단계 1302 에서 선택된 픽셀은 스크린 공간 이미지의 임의의 픽셀일 수 있다.In step 1302, the processor selects a pixel in screen space. The processor of FIG. 13 may be one or a combination of processor 110 and graphics processor 116 of FIG. 1. In one embodiment, screen space rasterization may be used to generate a 2D image of the scene in screen space. The method in FIG. 13 is used to add reflections to the pixels of the screen space image. The pixel selected in step 1302 may be any pixel of the screen space image.

단계 1304 에서, 프로세서는 픽셀이 오브젝트를 포함하는지의 여부를 결정한다. 일부 경우들에서, 픽셀은 배경 (예를 들어, 하늘) 을 포함할 수도 있고 따라서, 장면의 어떠한 오브젝트도 포함하지 않는다. 단계 1304 에서, 프로세서가 픽셀이 오브젝트를 포함하지 않는다고 결정하면, 픽셀에 대한 반사들이 계산되지 않고, 방법은 단계 1306 로 진행하며, 여기에서 프로세서는 반사들에 대해 처리할 스크린 공간에서의 임의의 더 이상의 픽셀이 있는지를 결정한다. 예라면, 방법은 단계 1302 로 리턴하고, 여기에서, 다른 픽셀이 선택된다. 일 구현에서, 각각의 픽셀은 순차적으로 프로세싱된다. 그러나, 다른 구현에서, 이미지의 각각의 픽셀은 예를 들어 그래픽 프로세서 (예를 들어, GPU) 에 의해 병렬로 프로세싱될 수도 있다.In step 1304, the processor determines whether the pixel contains an object. In some cases, a pixel may include a background (eg, a sky) and thus not include any object of the scene. If at step 1304 the processor determines that the pixel does not contain an object, the reflections for the pixel are not calculated, the method proceeds to step 1306, where the processor proceeds to any further in screen space to process for reflections. It is determined whether there are more pixels. If yes, the method returns to step 1302, where another pixel is selected. In one implementation, each pixel is processed sequentially. However, in other implementations, each pixel of the image may be processed in parallel by, for example, a graphics processor (eg, a GPU).

단계 1304 에서 프로세서가 픽셀이 오브젝트를 포함한다고 결정하면, 방법은 단계 1308 로 진행한다. 단계 1308 에서, 프로세서는 픽셀에서의 오브젝트의 표면의 조도 값을 결정한다. 일부 실시형태들에서, 3D 장면을 2D 이미지로 래스터화하면, 2D 이미지의 픽셀과 연관된 오브젝트에 관한 특정 정보를 알려지게 한다. 그러한 정보의 예들은 표면 조도 및 표면 배향을 포함한다. 표면 조도는 조도 값으로 표현될 수 있다. 예를 들어, 조도 값은 0.0 과 1.0 사이의 10진수 값일 수도 있다.If at step 1304 the processor determines that the pixel contains an object, the method proceeds to step 1308. In step 1308, the processor determines an illuminance value of the surface of the object in the pixel. In some embodiments, rasterizing a 3D scene into a 2D image results in certain information about an object associated with a pixel of the 2D image. Examples of such information include surface roughness and surface orientation. Surface roughness may be expressed as a roughness value. For example, the illuminance value may be a decimal value between 0.0 and 1.0.

단계 1310 에서, 프로세서는 조도 값에 기초하여 픽셀에 대해 발생하는 광선들의 수를 결정한다. 위에서 설명한 바와 같이, 매끄러운 표면들에 대해 단지 하나의 광선만이 발생된다. 더 거친 표면들에 대해 더 많은 광선이 발생될 수 있다. 일부 구현들에서, 발생된 광선들의 수는 임계 한계값 (예를 들어 프레임 당 4 개의 광선들) 로 제한된다.In step 1310, the processor determines the number of light rays that occur for the pixel based on the illuminance value. As described above, only one ray is generated for smooth surfaces. More light rays can be generated for the rougher surfaces. In some implementations, the number of generated rays is limited to a threshold limit (eg four rays per frame).

단계 1312 에서, 프로세서는 발생된 각각의 광선에 대한 광선 방향을 선택한다. 각각의 광선의 광선 방향은 픽셀에서 오브젝트의 표면 배향에 기초한다. 매끄러운 표면들 (즉, 하나의 광선이 발생됨) 에 대해,광선의 방향은 오브젝트의 표면으로부터 간단한 수학적 반사를 기초하여 정될 수 있다. In step 1312, the processor selects a beam direction for each beam generated. The ray direction of each ray is based on the surface orientation of the object in the pixel. For smooth surfaces (ie, one ray is generated), the direction of the ray can be determined based on simple mathematical reflections from the surface of the object.

다수의 광선들이 발생되는 경우, 광선 발생 알고리즘은 발생되는 각각의 광선의 방향을 결정할 수 있다. 일부 구현들에서, 준-Monte Carlo 기법이 즉 발생한 광선들에 대한 결정론적 난수 생성이 이용될 수 있다. 예를 들어, 주어진 프레임에 대해, 4 개의 광선들은 조도 값에 기초하여 픽셀에 대해 발생되도록 결정된다. 준-Monte Carlo 기법을 이용하여 4 개의 광선들에 대한 방향들을 결정할 수 있다. 4 개의 광선 각각은 표면 배향에 기초하여 도달 가능한 방향 분포 내에 속하는 방향을 갖는다.When multiple rays are generated, the ray generation algorithm can determine the direction of each ray generated. In some implementations, a quasi-Monte Carlo technique may be used, ie deterministic random number generation for generated rays. For example, for a given frame, four rays are determined to be generated for the pixel based on the illuminance value. The quasi-Monte Carlo technique can be used to determine the directions for the four rays. Each of the four rays has a direction that falls within the reachable direction distribution based on the surface orientation.

그 후, 동일한 오브젝트의 동일한 표면에 대응하는 픽셀을 포함하는 후속 프레임에서, 준-Monte Carlo 기법을 다시 이용하여 발생할 광선의 방향을 결정하지만, 이전 프레임(들) 에서의 광선들에 대해 선택된 방향들과 중첩하지 않는 방향들을 선택한다. 이 프로세스는 후속 프레임들에 대해 반복될 수 있고, 이에 의해 도시된 동일한 오브젝트의 동일한 표면을 가진 상이한 프레임들에 대해 상이한 광선 방향을 선택한다. 상이한 프레임들에서 상이한 광선 방향들을 선택하는 것에 의해, 상이한 반사 정보가 상이한 프레임들에 대해 연산된다. 반사들이 동일 포인트에 대해 프레임 단위로 상이하게 보일 수 있기 때문에, 이는 반사들을 지터링하는 것을 가져온다. 이하에서보다 상세하게 설명되는 바와 같이, 여러 프레임에 걸친 상이한 반사 정보는 일련의 프레임들에 걸쳐 어그리게이션될 수 있다. 이러한 방식으로, 상이한 프레임에 대해 발생된 광선들이 반사 정보를 형성하기 위해 함께 어그리게이션될 수 있는 상이한 방향들 (및 이에 따른 다른 반사 정보) 을 갖기 때문에, 노이즈가 덜한 결과들이 실현될 수 있다. Then, in subsequent frames containing pixels corresponding to the same surface of the same object, the quasi-Monte Carlo technique is again used to determine the direction of the rays to occur, but selected directions for the rays in the previous frame (s). Select directions that do not overlap with. This process can be repeated for subsequent frames, thereby selecting different ray directions for different frames with the same surface of the same object shown. By selecting different ray directions in different frames, different reflection information is computed for different frames. Since the reflections may look different frame by frame for the same point, this results in jittering the reflections. As described in more detail below, different reflection information over several frames may be aggregated over a series of frames. In this way, less noise results can be realized because the light rays generated for the different frames have different directions (and hence other reflection information) that can be aggregated together to form the reflection information.

하나 이상의 광선들에 대해 광선 방향이 결정되면 (단계 1312), 단계 1314 에서, 프로세서는 하나 이상의 광선들 각각에 대해 광선 진행을 수행한다. 일 실시형태에서, 광선 진행은 각각의 광선을 픽셀 단위로 조사하여 교차부를 검색하는 것을 포함한다. 다른 실시형태에서, 최적화된 광선 진행 방법이 도 11 에 설명된 바와 같이 이용될 수 있다. Once the ray direction is determined for one or more rays (step 1312), in step 1314, the processor performs ray propagation for each of the one or more rays. In one embodiment, the ray progression includes irradiating each ray pixel by pixel to search for intersections. In another embodiment, an optimized ray propagation method can be used as described in FIG. 11.

단계 1316 에서, 프로세서는 각각의 광선에 대해 광선 진행이 성공 또는 실패였는지의 여부를 결정한다. 주어진 광선에 대해, 광선 진행이 성공이면, 단계 1318 에서, 프로세서는 광선 진행을 통해 광선이 찾은 교차부의 컬러 값 정보를 저장한다. 주어진 광선에 대해 광선 진행이 실패이면, 단계 1320 에서, 프로세서는 광선에 대해 광선 트레이싱을 수행한다. 설명된 바와 같이, 광선이 어떠한 오브젝트와도 상호작용하지 않고 뷰포트의 에지부에 도달할 때 광선 진행이 실패한다. 광선 트레이싱된 광선은 뷰포트 에지부에서 시작될 수 있으며, 그 이유는 프로세서가 뷰포트 내에 다른 교차부가 없음을 알기 때문이다 (즉, 광선 진행이 실패하였기 때문이다).In step 1316, the processor determines whether the ray progression was success or failure for each ray. For a given ray, if ray progression is successful, at step 1318, the processor stores the color value information of the intersection where the ray found through the ray progression. If the ray propagation fails for a given ray, in step 1320 the processor performs ray tracing on the ray. As described, the ray propagation fails when the ray reaches the edge of the viewport without interacting with any object. Ray traced rays can begin at the viewport edge, because the processor knows there are no other intersections in the viewport (ie, the ray propagation failed).

단계 1322에서, 광선 트레이싱된 각각의 광선에 대해, 프로세서는 광선 트레이싱된 광선이 3D 장면의 오브젝트와 교차하는지의 여부를 결정한다. 설명된 바와 같이, 광선 트레이싱은 뷰포트 내에 있는 오브젝트 뿐만 아니라 장면의 모든 오브젝트들과의 교차부를 검색하는 것을 포함할 수 있다.In step 1322, for each ray traced ray, the processor determines whether the ray traced ray intersects an object in the 3D scene. As described, ray tracing can include retrieving intersections with all objects in the scene as well as objects within the viewport.

어떠한 오브젝트와도 교차하지 않는 (예를 들어, 장면의 바운딩 박스의 에지부에 도달하는) 각각의 광선 트레이싱된 광선에 대해, 단계 1324 에서 프로세서는 광선을 폐기한다. 따라서 반사들에 대한 컬러 정보가 광선에 대해 얻어지지 않는다.For each ray traced ray that does not intersect any object (eg, reaches the edge of the bounding box of the scene), the processor discards the ray at step 1324. Thus color information for reflections is not obtained for the light ray.

오브젝트와 교차하는 각각의 광선 트레이싱된 광선에 대해, 단계 1326 에서, 프로세서는 광선 진행을 통해 광선이 찾은 교차부의 컬러 값 정보를 저장한다.For each ray traced ray that intersects the object, at step 1326, the processor stores the color value information of the intersection where the ray found through the ray progression.

단계 1328 에서, 프로세서는 장면 내의 오브젝트와 교차하는 하나 이상의 광선의 컬러 값을 어그리게이션한다. 컬러 값들은 광선 진행 또는 광선 트레이싱을 통해 얻어질 수 있다. 일 실시형태에서, 컬러 값들은 함께 단순 평균처리되어 픽셀에서의 반사에 대한 컬러 값을 결정한다.In step 1328, the processor aggregates the color values of the one or more rays that intersect the object in the scene. Color values can be obtained through ray propagation or ray tracing. In one embodiment, the color values are simply averaged together to determine the color value for reflection in the pixel.

단계 1328 후에, 본 방법은 단계 1306 으로 진행하며, 여기서 프로세서는 전술한 바와 같이 반사를 프로세싱하기 위해 스크린 공간에 더 이상의 픽셀이 있는지의 여부를 결정한다.After step 1328, the method proceeds to step 1306, where the processor determines whether there are more pixels in the screen space to process the reflection as described above.

일 실시형태에서, 도 13 은 오브젝트가 위치하는 스크린 공간에서 각각의 픽셀에 대한 프라이머리 반사들을 생성하기 위해 이용된다. 일 실시형태에서, 세컨더리 반사는 큐브 맵들을 이용하여 생성될 수 있다. 다른 실시형태에서, 세컨더리 반사는 또한 도 13 의 방법을 이용하여 생성될 수 있다. In one embodiment, FIG. 13 is used to generate primary reflections for each pixel in the screen space where the object is located. In one embodiment, the secondary reflection can be generated using cube maps. In another embodiment, the secondary reflection can also be generated using the method of FIG. 13.

전술한 바와 같이, 본 개시의 실시형태들은 광선 진행을 수행하려고 하고 광선 진행이 실패하면 광선 트레이싱을 수행하는 것에 의해 반사가 생성되는 시스템 및 방법을 제공한다. 후술되는 또 다른 실시형태는 주어진 픽셀에 대한 인접 픽셀들의 광선 진행 결과들을 재이용하기 위한 시스템 및 방법을 제공한다.As noted above, embodiments of the present disclosure provide a system and method in which reflection is created by performing ray tracing if a ray progression fails to proceed. Another embodiment described below provides a system and method for reusing ray propagation results of adjacent pixels for a given pixel.

도 14a 는 일 실시형태에 따라 3D 장면을 예시하는 블록도이다. 3D 장면을 2D 스크린 공간으로 래스터화할 수 있다. 참조용으로 2D 스크린 공간의 3 개의 픽셀들이 도시된다. 픽셀 (1402A) 은 장면 내의 오브젝트의 표면 상의 제 1 포인트에 대응하고 (즉, 오브젝트가 바닥임), 픽셀 (1402B) 은 장면 내의 오브젝트의 표면 상의 제 2 포인트에 대응하고, 픽셀 (1402C) 은 장면에서 오브젝트의 표면 상의 제 3 포인트에 대응한다. 도 13 에 기술된 방법이 픽셀 (1402B) 에 대한 반사 정보를 결정하기 위해 수행된다고 가정한다. 또한, 픽셀 (1402B) 에서의 오브젝트의 표면 조도에 기초하여, 반사 정보를 결정하기 위해 3 개의 광선들이 발생되어야 한다고 가정한다. 도 13 에 도시된 방법을 이용하여, 3 개의 광선 방향들이 결정될 수 있고, 개별적으로 광선이 진행될 수 있으며, 광선 진행이 실패하면, 광선은 설명된 바와 같이, 광선 트레이싱을 통해 재캐스트된다.14A is a block diagram illustrating a 3D scene according to one embodiment. You can rasterize 3D scenes into 2D screen space. Three pixels of 2D screen space are shown for reference. Pixel 1402A corresponds to the first point on the surface of the object in the scene (ie, the object is a bottom), pixel 1402B corresponds to the second point on the surface of the object in the scene, and pixel 1402C is the scene Corresponds to the third point on the surface of the object in. Assume that the method described in FIG. 13 is performed to determine reflection information for the pixel 1402B. Further, based on the surface roughness of the object in pixel 1402B, assume that three light rays should be generated to determine the reflection information. Using the method shown in FIG. 13, three light beam directions can be determined, the light beams can proceed individually, and if the light propagation fails, the light beams are recast through light tracing, as described.

그러나, 본 개시의 일부 실시형태들은 새로운 광선들, 예를 들어, 픽셀 (1402B) 에 대해 3 개의 새로운 광선을 생성하는 것을 회피할 수 있고, 일부 경우들에서, 반사 정보를 결정하기 위해 인접 픽셀들로부터의 정보를 재이용할 수 있다. 이러한 실시형태들에서, (임계 반경 내의) 인접 픽셀이 (임계 조도 내에서) 유사한 표면 조도를 가지며 또한 (임계 배향 내에서) 유사한 표면 배향을 갖는다면, 이러한 인접 픽셀들로부터의 광선 진행 및/또는 광선 트레이싱된 정보는 주어진 픽셀에 대한 반사 컬러 정보를 결정할 때 재이용될 수 있다. 일부 실시형태들에서, 재이용되려 하는 오브젝트 컬러 정보가 주어진 픽셀로부터 도달가능한 광선 분포 내에 있어야 한다는 추가적인 제약이 있을 수도 있다.However, some embodiments of the present disclosure may avoid generating three new rays for new rays, for example pixel 1402B, and in some cases, adjacent pixels to determine reflection information. Information from can be reused. In such embodiments, if adjacent pixels (within the critical radius) have similar surface roughness (within the critical illuminance) and have similar surface orientations (within the critical orientation), then light propagation and / or from these adjacent pixels The ray traced information can be reused in determining reflective color information for a given pixel. In some embodiments, there may be an additional constraint that the object color information to be reused must be within the ray distribution reachable from a given pixel.

도 14b 는 도 14a 에서의 3D 장면을 나타내는 블록도이며, 일부 광선들은 일 실시형태에 따라 이웃 픽셀들로부터 재이용된다. 설명된 바와 같이, 주어진 픽셀 (예를 들어, 픽셀 (1402B)) 에 대해 반사 정보를 결정하려 할 때, 이전 프레임들로부터의 인접 픽셀들로부터의 일부 반사 정보가 재이용될 수도 있다. 도시된 예에서, 픽셀들 (1402A 및 1402C) 은 픽셀 (1402B) 의 임계 반경 내에 있다. 임계 반경은 구성가능할 수도 있다. 일 구현에서, 임계 반경은 조사되는 중심 픽셀로부터 반경이 약 6-8 픽셀이다. (이전 프레임 또는 현재 프레임에서의) 픽셀 (1402A) 에 대해 반사 정보를 연산할 때, 광선은 픽셀 (1402A) 로부터 캐스팅되었고 포인트 (1406A) 에서 오브젝트와 교차하는 것으로 식별되었다. 이 교차부는 도 13 의 방법에 따라 광선 진행 또는 광선 트레이싱을 이용하여 찾아질 수 있다. 도 14b 에서 도시된 예에서, 교차부의 오브젝트가 뷰포트 내에 있을 때, 광선 트레이싱을 통하여 교차부가 찾아졌다. 이와 유사하게, (이전 프레임 또는 현재 프레임에서의) 픽셀 (1402C) 에 대해 반사 정보를 연산할 때, 광선은 픽셀 (1402C) 로부터 캐스팅되었고 포인트 (1406C) 에서 오브젝트와 교차하는 것으로 식별되었다. 본원에 개시된 바와 같이, 반사 정보를 결정하기 위해 픽셀 (1402B) 로부터 다수의 광선을 발생시키는 대신에, 일부 실시형태들은 특정 조건들이 만족되면 포인트들 (1406A 및 1406C) 로부터의 컬러 정보를 재이용할 수도 있다.FIG. 14B is a block diagram illustrating a 3D scene in FIG. 14A, with some rays being reused from neighboring pixels according to one embodiment. FIG. As described, when attempting to determine reflection information for a given pixel (eg, pixel 1402B), some reflection information from adjacent pixels from previous frames may be reused. In the example shown, pixels 1402A and 1402C are within a critical radius of pixel 1402B. The critical radius may be configurable. In one implementation, the threshold radius is about 6-8 pixels from the center pixel to be irradiated. When computing reflection information for pixel 1402A (either in the previous frame or the current frame), the light beam was cast from pixel 1402A and identified as intersecting the object at point 1406A. This intersection can be found using ray propagation or ray tracing according to the method of FIG. 13. In the example shown in FIG. 14B, when the object of the intersection is in the viewport, the intersection was found through ray tracing. Similarly, when computing reflection information for pixel 1402C (either in the previous frame or the current frame), the ray was cast from pixel 1402C and identified as intersecting the object at point 1406C. As disclosed herein, instead of generating multiple rays of light from the pixel 1402B to determine reflection information, some embodiments may reuse color information from points 1406A and 1406C if certain conditions are met. have.

일부 실시형태들에서, 제 1 조건은 잠재적으로 재이용가능한 정보의 소스인 픽셀 (즉, 1402A 또는 1402C) 과 연관된 오브젝트의 표면 조도와 픽셀 (1402B) 과 연관된 오브젝트의 표면 조도 사이의 차이가 임계 조도 내에 있다는 것이다. 일부 실시형태들에서, 임계 조도는 구성가능하다.In some embodiments, the first condition is that a difference between the surface roughness of the object associated with the pixel (ie, 1402A or 1402C) that is a source of potentially reusable information and the surface roughness of the object associated with the pixel 1402B is within the threshold roughness. Is there. In some embodiments, the threshold illuminance is configurable.

일부 실시형태들에서, 제 2 조건은 잠재적으로 재이용가능한 정보의 소스인 픽셀 (즉, 1402A 또는 1402C) 과 연관된 오브젝트의 표면 배향과 픽셀 (1402B) 과 연관된 오브젝트의 표면 배향 사이의 차이가 임계 배향 내에 있다는 것이다. 일부 실시형태들에서, 임계 배향은 구성가능하다.In some embodiments, the second condition is that a difference between the surface orientation of the object associated with the pixel (ie, 1402A or 1402C) that is a source of potentially reusable information and the surface orientation of the object associated with the pixel 1402B is within the critical orientation. Is there. In some embodiments, the critical orientation is configurable.

일부 실시형태들에서, 제 3 조건은 잠재적으로 재이용가능한 정보가 특정 광선 분포 (1408) 내에서 픽셀 (1402B) 로부터 도달가능해야 한다는 것이다. 일부 실시형태들에서, 프라이머리 반사 광선의 잠재적인 광선 방향들의 세트는 픽셀 내의 오브젝트로부터 카메라까지의 각도 및 표면 조도에 의존한다. 예시적인 광선 분포 (1408) 가 도 14b 에 도시된다. 일 구현에서, 광선 분포 (1408) 는 GGX 쉐이딩 모델에 의해 연산될 수도 있다. 라인은 잠재적으로 재이용가능한 정보의 소스들로부터 (즉, 포인트 (1406A, 1406C) 로부터) 픽셀 (1402B) 과 연관된 오브젝트로 드로잉될 수도 있다. 도 14b 에 도시된 바와 같이, 잠재적으로 재사용 가능한 정보들의 (즉, 포인트들 (1406A, 1406C) 로부터의) 양쪽 소스들에 대한 라인들은 광선 분포 (1408) 내에 있고, 따라서 제 3 조건을 만족시킨다.In some embodiments, a third condition is that potentially reusable information must be reachable from pixel 1402B within a particular ray distribution 1408. In some embodiments, the set of potential ray directions of the primary reflected ray depends on the angle and surface roughness from the object in the pixel to the camera. An exemplary ray distribution 1408 is shown in FIG. 14B. In one implementation, ray distribution 1408 may be computed by the GGX shading model. A line may be drawn into an object associated with pixel 1402B from sources of potentially reusable information (ie, from points 1406A, 1406C). As shown in FIG. 14B, the lines for both sources of potentially reusable information (ie, from points 1406A, 1406C) are in ray distribution 1408, thus satisfying a third condition.

다양한 실시형태들에서, 제 1, 제 2 및 제 3 조건 중 하나, 둘 또는 셋 모두를 이용하여 데이터가 이러한 방식으로 재이용될 수 있는지의 여부를 결정할 수 있다.In various embodiments, one, two, or all of the first, second, and third conditions can be used to determine whether data can be reused in this manner.

일 실시형태에서, 전술한 바와 같이, 재이용되는 이웃 픽셀들에 의해 결정된 반사 정보는 이전 프레임에서 연산되었다. 다른 실시형태에서, 재이용된 정보는 동일한 프레임으로부터 유래하지만, 반사 정보가 이미 연산되었던 픽셀로부터 유래할 수 있다.In one embodiment, as described above, the reflection information determined by the reused neighboring pixels was computed in the previous frame. In other embodiments, the reused information may be from the same frame, but from the pixels for which the reflection information has already been computed.

도 15 은 일 실시형태에 따른 인접 픽셀들의 광선 정보를 재이용하기 위한 방법 단계들의 플로우 다이어그램이다. 단계 1502 에서, 제 1 픽셀에 대해, 프로세서는 발생할 광선들의 수를 결정한다. 도 15 의 프로세서는 도 1 의 프로세서 (110) 및 그래픽 프로세서 (116) 중 하나 또는 조합일 수 있다. 전술한 바와 같이, 일부 실시형태들에서, 발생하는 광선들의 수는 제 1 픽셀과 연관된 오브젝트의 표면 조도에 기초한다. 단계 1504 에서, 프로세서는 제 1 픽셀의 임계 반경 내에서 이웃 픽셀들을 식별한다. 일 실시형태에서, 임계 반경은 구성가능하다. 일 실시형태에서, 임계 반경 내의 각각의 이웃 픽셀은 재이용가능한 반사 정보를 찾으려 하도록 조사된다. 다른 실시형태에서, 충분한 재이용가능 정보가 위치될 때까지 임계 반경 내의 이웃 픽셀들이 조사되고, 이 포인트에서 추가적인 이웃 픽셀들이 조사되지 않는다.15 is a flow diagram of method steps for reusing ray information of adjacent pixels in accordance with an embodiment. In step 1502, for the first pixel, the processor determines the number of rays to occur. The processor of FIG. 15 may be one or a combination of processor 110 and graphics processor 116 of FIG. 1. As mentioned above, in some embodiments, the number of rays generated is based on the surface roughness of the object associated with the first pixel. In step 1504, the processor identifies neighboring pixels within a threshold radius of the first pixel. In one embodiment, the critical radius is configurable. In one embodiment, each neighboring pixel within the critical radius is examined to find reusable reflection information. In another embodiment, neighboring pixels within the critical radius are examined until sufficient re-availability information is located, and no additional neighboring pixels are examined at this point.

단계 1506 에서, 주어진 이웃 픽셀에 대해, 프로세서는 이웃 픽셀과 연관된 오브젝트가 제 1 픽셀과 연관된 오브젝트와 유사한 표면 조도를 갖는지의 여부를 결정한다. 그렇지 않다면, 이웃 픽셀로부터의 반사 정보는 재이용되지 않는다. 예이면, 방법은 단계 1508 으로 진행한다.In step 1506, for a given neighboring pixel, the processor determines whether the object associated with the neighboring pixel has a surface roughness similar to the object associated with the first pixel. Otherwise, reflection information from neighboring pixels is not reused. If yes, the method proceeds to step 1508.

단계 1508 에서, 주어진 이웃 픽셀에 대해, 프로세서는 이웃 픽셀과 연관된 오브젝트가 제 1 픽셀과 연관된 오브젝트와 유사한 표면 배향을 갖는지의 여부를 결정한다. 그렇지 않다면, 이웃 픽셀로부터의 반사 정보는 재이용되지 않는다. 예이면, 방법은 단계 1510 으로 진행한다.In step 1508, for a given neighboring pixel, the processor determines whether the object associated with the neighboring pixel has a similar surface orientation as the object associated with the first pixel. Otherwise, reflection information from neighboring pixels is not reused. If yes, the method proceeds to step 1510.

단계 1510 에서, 주어진 이웃 픽셀에 대해, 프로세서는 잠재적으로 재이용가능한 정보가 광선 분포 내의 제 1 픽셀과 연관된 오브젝트로부터 도달 가능한지의 여부를 결정한다. 그렇지 않다면, 이웃 픽셀로부터의 반사 정보는 재이용되지 않는다. 예이면, 방법은 단계 1512 으로 진행한다.In step 1510, for a given neighboring pixel, the processor determines whether potentially reusable information is reachable from the object associated with the first pixel in the ray distribution. Otherwise, reflection information from neighboring pixels is not reused. If yes, the method proceeds to step 1512.

단계 1512 에서, 프로세서는 이웃 픽셀로부터의 반사 정보를 재이용한다.In step 1512, the processor reuses reflection information from neighboring pixels.

단계들 1506, 1508, 1510 이 특정 순서로 도시되었지만, 다른 실시형태들에서 단계들 1506, 1508, 1510 은 임의의 순서로 수행될 수 있다. 또한, 일부 실시형태들에서, 단계들 1506, 1508, 1510 중 하나 이상은 선택적이며 생략될 수 있다.Although steps 1506, 1508, 1510 are shown in a particular order, in other embodiments steps 1506, 1508, 1510 may be performed in any order. Also, in some embodiments, one or more of steps 1506, 1508, 1510 may be optional and may be omitted.

일 실시형태에서, 제 1 프레임에서, 이미지의 모든 다른 픽셀 (또는 픽셀들의 일부 세트) 에 대한 반사들은 도 13 의 방법을 이용하여 생성된다. 예를 들어, 이미지가 흑백 체커보드 패턴으로 표현되었다면, 도 13 의 방법은 흰색 체커들 (즉, 모든 다른 픽셀) 로 표시된 픽셀에만 적용된다. 흑색 체커로 표현된 픽셀들에 대해, 도 15 의 광선 재이용 기법을 이용하여 이들 픽셀들에 대한 반사 정보를 생성할 수 있다. 다음 프레임에서, 연산은 역전되고, 도 13 의 방법은 흑색 체커에 의해 표현된 픽셀들에 대한 반사 정보를 생성하기 위해 수행되고 도 15 의 광선 재이용 기법은 백색 체커에 의해 표현된 픽셀들에 대한 반사 정보를 생성하기 위해 수행된다. 이러한 방식으로, 각각의 프레임마다 프레임에 대한 반사 정보의 풀 해상도가 있지만, 많은 광선들의 절반만이 필요하다. In one embodiment, in the first frame, reflections for all other pixels (or some set of pixels) of the image are generated using the method of FIG. 13. For example, if the image is represented in a black and white checkerboard pattern, the method of FIG. 13 applies only to the pixels marked with white checkers (ie, all other pixels). For pixels represented by black checkers, the ray reuse technique of FIG. 15 may be used to generate reflection information for these pixels. In the next frame, the operation is reversed, the method of FIG. 13 is performed to generate reflection information for the pixels represented by the black checkers and the ray reuse technique of FIG. 15 reflects the pixels for the pixels represented by the white checkers. It is done to generate the information. In this way, there is a full resolution of reflection information for a frame for each frame, but only half of many rays are needed.

일부 구현들에서, 반사들은 도 13 의 방법을 이용하여, 그리고 도 15 의 광선 재이용에 의해 또는 재이용 없이 이미지의 각각의 픽셀에 추가될 수 있다. 일부 경우들에서, 장면이 글로시 반사들을 포함할 때 특히, 전체 프레임에 걸친 반사 결과들이 노이즈를 나타낼 수도 있다. 이와 같이, 일부 실시형태들은 시간 필터링을 수행하는 것에 의해 노이즈를 평활하게 할 수 있다.In some implementations, the reflections can be added to each pixel of the image using the method of FIG. 13 and with or without the ray reuse of FIG. 15. In some cases, reflection results over the entire frame may exhibit noise, particularly when the scene includes glossy reflections. As such, some embodiments may smooth noise by performing temporal filtering.

도 16a 는 일 실시형태에 따른 반사의 일 예이다. 스크린 공간의 주어진 픽셀은 오브젝트 상의 포인트 (1602) 에 대응할 수도 있다. 반사 광선은 포인트 (1602) 와 연관된 픽셀로부터 발생될 수 있고 포인트 (1604) 에서의 다른 오브젝트와 교차할 수도 있다. 포인트 (1604) 로부터의 컬러 정보는 포인트 (1602) 와 연관된 픽셀에 반사 정보를 추가하기 위해 이용될 수 있다. 투사된 포인트 (1606) 는 또한 주어진 프레임에 대한 눈/카메라의 가상 포지션 (1608A) 에 대한 가상 반사 영역의 포인트 (1604) 에 대해 연산될 수 있다.16A is an example of reflection, according to one embodiment. A given pixel of screen space may correspond to point 1602 on the object. The reflected light rays may be generated from the pixels associated with point 1602 and may intersect other objects at point 1604. Color information from point 1604 can be used to add reflection information to the pixel associated with point 1602. The projected point 1606 may also be computed for the point 1604 of the virtual reflection area for the virtual position 1608A of the eye / camera for a given frame.

후속 프레임에서, 도 16b 에 도시된 바와 같이, 카메라/눈의 가상 포지션 (1608B)은 다른 위치로 이동하였다. 카메라/눈의 업데이트된 가상 포지션 (1608B) 에서의 스크린 공간의 주어진 픽셀은 오브젝트 상의 포인트 (1610) 에 대응할 수도 있다. 반사 광선은 포인트 (1610) 와 연관된 픽셀로부터 발생될 수 있고 포인트 (1614) 에서의 다른 오브젝트와 교차할 수도 있다. 투사된 포인트 (1616) 는 또한 주어진 프레임에 대한 눈/카메라의 업데이트된 가상 포지션 (1608B) 에 대한 가상 반사 영역의 포인트 (1614) 에 대해 연산될 수 있다. 도 16b 에서, 투사된 포인트 (1616) 로부터 눈/카메라의 업데이트된 가상 포지션 (1608B) 으로의 라인은 포인트 (1610) 를 통과한다.In a subsequent frame, as shown in FIG. 16B, the virtual position 1608B of the camera / eye has moved to another position. A given pixel of screen space in the updated virtual position 1608B of the camera / eye may correspond to point 1610 on the object. The reflected light rays may be generated from the pixels associated with point 1610 and may intersect other objects at point 1614. The projected point 1616 can also be computed relative to the point 1614 of the virtual reflection area for the updated virtual position 1608B of the eye / camera for a given frame. In FIG. 16B, a line from the projected point 1616 to the updated virtual position 1608B of the eye / camera passes through point 1610.

일부 실시형태들에서, 프로세서는 이전 프레임 (도 16a) 의 포인트 (1602) 가 후속 프레임 (도 16b) 에서의 포인트 (1610) 와 유사한 표면 조도를 갖는지의 여부를 결정하도록 구성될 수도 있다. 포인트들 (1602 및 1610) 의 표면 조도 값들이 임계 차이 이내이면, 2 개의 프레임들에 대한 반사 결과들은 함께 블러링될 수 있으며, 이는 시간 필터링이라고 지칭된다. 이는 양쪽 포인트들 (1602 및 1610) 이 오브젝트의 동일한 부분을 나타내는 반사에 대응하기 때문이다. 시간 필터링은 이미지의 프레임 단위의 각각의 픽셀에 대해 반복될 수 있다. 일부 구현들에서 결과들은 노이즈가 적은 반사들을 보다 매끄럽게 표현한다. 그러나, 일부 경우들에서, 프로세서는 2 개의 프레임들에 대한 반사 결과가 함께 블러링될 수 있다는 낮은 확신이 있다고 결정할 수도 있다. 예를 들어, 포인트들 (1602 및 1610) 의 표면 조도 값들이 임계 값을 초과할 정도로 충분히 다른 경우, 2 개의 프레임들에 대한 반사 결과들이 함께 블러링될 수 없다. 또한, 다른 오브젝트가 오리지널 반사 교차부 (예를 들어, 도 16a 의 포인트 (1604)) 의 앞에서 이동하였다면, 2 개의 프레임들에 대한 반사 결과들은 함께 블러링될 수 없다.In some embodiments, the processor may be configured to determine whether point 1602 of the previous frame (FIG. 16A) has a surface roughness similar to point 1610 in the subsequent frame (FIG. 16B). If the surface roughness values of points 1602 and 1610 are within a threshold difference, the reflection results for the two frames can be blurred together, which is called temporal filtering. This is because both points 1602 and 1610 correspond to reflections representing the same portion of the object. Temporal filtering may be repeated for each pixel in frame units of the image. In some implementations the results more smoothly represent low noise reflections. However, in some cases, the processor may determine that there is a low certainty that the reflection results for the two frames may be blurred together. For example, if the surface roughness values of points 1602 and 1610 are different enough to exceed the threshold, the reflection results for the two frames cannot be blurred together. Also, if another object has moved in front of the original reflection intersection (eg, point 1604 of FIG. 16A), the reflection results for the two frames cannot be blurred together.

도 17 은 일 실시형태에 따라, 상이한 표면 조도 값들을 갖는 후속 프레임들의 2 개의 포인트들을 예시하는 블록도이다. 오브젝트 (1700) 의 표면 (즉, 바닥) 이 거친 표면들 (1710) 과 매끄러운 표면 (1720) 의 교번 영역을 갖는 체크보드 패턴을 갖는다고 가정한다. 제 1 프레임에서, 가상 반사 영역에서의 포인트 (1730) 로부터 눈/카메라의 제 1 가상 포지션 (1708A) 으로의 라인은 거친 표면 (1710) 에 대응하는 포인트 (1702) 를 통과한다. 제 2 프레임에서, 가상 반사 영역에서의 포인트 (1730) 로부터 눈/카메라의 제 2 가상 포지션 (1708B) 으로의 라인은 매끄러운 표면 (1720) 에 대응하는 포인트 (1704) 를 통과한다. 이 경우, 2 개의 프레임들에 대한 반사 결과들은 포인트들 (1702 및 1704) 의 표면 조도 값들이 서로의 임계 차이 내에 있는 것이 아니기 때문에 함께 블러링될 수 없다.17 is a block diagram illustrating two points of subsequent frames having different surface roughness values, in accordance with an embodiment. Assume that the surface (ie, bottom) of the object 1700 has a checkerboard pattern with alternating regions of rough surfaces 1710 and smooth surfaces 1720. In the first frame, a line from point 1730 in the virtual reflection area to the first virtual position 1708A of the eye / camera passes through point 1702 corresponding to rough surface 1710. In the second frame, a line from point 1730 in the virtual reflection area to the second virtual position 1708B of the eye / camera passes through point 1704 corresponding to smooth surface 1720. In this case, the reflection results for the two frames cannot be blurred together because the surface roughness values of points 1702 and 1704 are not within the critical difference from each other.

도 16a 내지 도 16b 에 도시된 예들에서, 단일 반사 광선이 도시되어 있다. 이러한 구현은 거울 반사를 초래하는 매끄러운 표면에 대응할 수도 있다. 글로시 반사들을 생성하기 위해 다수의 광선들이 발생되는 거친 표면에서, 다수의 광선들에 의한 오브젝트의 교차부의 평균 포지션이 연산될 수 있으며, 위에서 설명한 프로세스가 다수의 광선들에 의해 오브젝트의 교차부의 평균 포지션에 기초하여 반복될 수 있다.In the examples shown in FIGS. 16A-16B, a single reflected ray is shown. Such an implementation may correspond to a smooth surface resulting in mirror reflection. On a rough surface where multiple rays are generated to produce glossy reflections, the average position of the intersection of the object by the multiple rays can be computed, and the process described above can be calculated by the multiple rays of the average position of the intersection of the object. Can be repeated on the basis of

도 18 은 일 실시형태에 따른 시간 필터링을 수행하기 위한 방법 단계들의 플로우 다이어그램이다. 제 1 프레임에 대해, 단계 1802 에서, 프로세서는 반사 광선 또는 반사 광선들의 세트에 의한 오브젝트의 교차부의 위치를 결정한다. 도 18 의 프로세서는 도 1 의 프로세서 (110) 및 그래픽 프로세서 (116) 중 하나 또는 조합일 수 있다. 여러 실시형태들에서, 교차부의 위치는 단일 반사 광선으로부터의 단일 위치일 수 있거나, 또는 오브젝트에 교차하는 다수의 광선 반사들에 기초하는 교차부의 평균 위치일 수 있다. 다른 실시형태에서, 다수의 반사 광선들이 오브젝트와 교차할 때와 같이 교차부의 다수의 위치들이 연산될 수 있다.18 is a flow diagram of method steps for performing temporal filtering according to an embodiment. For the first frame, at step 1802, the processor determines the location of the intersection of the object by the reflected ray or set of reflected rays. The processor of FIG. 18 may be one or a combination of processor 110 and graphics processor 116 of FIG. 1. In various embodiments, the location of the intersection can be a single location from a single reflected ray or can be an average location of the intersection based on multiple ray reflections intersecting the object. In other embodiments, multiple positions of the intersection may be computed, such as when multiple reflected rays intersect the object.

단계 1804 에서, 프로세서는 반사 영역에서 교차부의 위치를 결정한다. 단계 1806 에서, 프로세서는 반사 영역에서 교차부의 위치로부터 눈/카메라의 위치를 향한 라인을 투사한다. 단계 1808 에서, 프로세서는 반사가 도시된 오브젝트의 표면 상에 투사된 라인의 교차부의 위치를 결정한다.In step 1804, the processor determines the location of the intersection in the reflection area. In step 1806, the processor projects a line from the location of the intersection in the reflection area towards the location of the eye / camera. In step 1808, the processor determines the location of the intersection of the projected lines on the surface of the object for which reflection is shown.

후속 프레임에 대해, 프로세서는 반사 광선 또는 반사 광선들의 세트에 의한 오브젝트의 교차부 위치를 결정하고 (단계 1810), 반사 영역에서 교차부의 위치를 결정하고 (단계 1812), 반사 영역에서의 교차부의 위치로부터 눈/카메라의 위치를 향하는 라인을 투사하고 (단계 1814), 반사가 도시된 오브젝트의 표면 상의 투사된 선의 교차부 위치를 결정한다 (단계 1816). 단계들 1810, 1812, 1814, 1816 은 단계들 1802, 1804, 1806, 1808 각각에 대해 그러나 후속 프레임에 대해 유사하다.For subsequent frames, the processor determines the location of the intersection of the object by the reflected ray or set of reflected rays (step 1810), determines the location of the intersection in the reflection area (step 1812), and positions the intersection in the reflection area. Project a line from the camera to the location of the eye / camera (step 1814), and determine the location of the intersection of the projected lines on the surface of the object for which reflection is shown (step 1816). Steps 1810, 1812, 1814, 1816 are similar for steps 1802, 1804, 1806, 1808, but for subsequent frames, respectively.

단계 1818 에서, 프로세서는 제 1 프레임에 대한 오브젝트의 표면 상의 투사된 라인의 교차부의 위치의 표면 조도가 후속 프레임에 대한 오브젝트의 표면 상의 투사된 라인의 교차부의 위치의 표면 조도의 임계 차이 내에 있는지의 여부를 결정한다. 제 1 프레임과 후속 프레임에 대한 투사된 라인의 교차부 위치들의 표면 조도가 임계 차이 내에 있으면, 반사 정보는 를 보다 매끄러운 반사들을 형성하기 위해 함께 블러링될 수 있다.In step 1818, the processor determines whether the surface roughness of the position of the intersection of the projected lines on the surface of the object relative to the first frame is within a threshold difference in the surface roughness of the position of the intersection of the projected lines on the surface of the object relative to the next frame. Determine whether or not. If the surface roughness of the intersection positions of the projected line for the first frame and the subsequent frame are within a threshold difference, the reflection information can be blurred together to form smoother reflections.

일부 실시형태들에서, 반사 정보가 함께 블러링될 수 있다고 결정하기 전에 추가적인 기준이 조사된다. 예를 들어, 제 1 프레임 및 후속 프레임으로부터의 반사 광선 또는 반사 광선들의 세트에 의한 오브젝트의 교차부의 위치의 컬러 정보는, 예를 들어 이것이 양쪽 프레임들에서 반사되고 있는 동일한 오브젝트인지의 여부 또는 오브젝트가 컬러를 변경했는지를 결정하기 위해 비교될 수 있다. 도 18 에 설명된 프로세스는 교차부의 단일 위치를 참조한다. 프로세스는 여러 교차부의 위치들에 대해 반복될 수 있다.In some embodiments, additional criteria are examined before determining that the reflection information can be blurred together. For example, the color information of the position of the intersection of the object by the reflected ray or the set of reflected rays from the first frame and the subsequent frame can be for example whether it is the same object being reflected in both frames or if the object is Can be compared to determine if the color has changed. The process described in FIG. 18 refers to a single location of the intersection. The process can be repeated for the locations of the various intersections.

위에 설명된 바와 같이, 일부 반사들은 거울 반사들일 수도 있고, 일부 반사들은 글로시 반사들일 수도 있다. 일부 글로시 반사들은 또한 연신된 반사들일 수도 있다.As described above, some reflections may be mirror reflections and some reflections may be glossy reflections. Some glossy reflections may also be stretched reflections.

도 19 는 연신된 반사의 예들 (1900) 을 예시한다. 도 20 은 일 실시형태에 따른 연신된 반사들을 설명하는 블록도이다. 거친 표면 (2000) 은 글로시 반사들을 초래하는 복수의 마이크로패싯들 (mircofacets)(2002) 을 포함한다. 광원 (2006)(또는 반사 정보의 소스) 에 대한 눈/ 카메라 (2004) 의 그레이징 각도에 기초하여, 글로시 반사가 펼쳐질 수 있다. 연신된 반사의 형상은 일반적으로 도 21 에 도시된 바와 같이 타원의 형태를 취한다. 타원 내에 있는 반사 데이터는 타원 내의 픽셀들에 대한 반사 정보를 생성하기 위해 타원의 형상과 사이즈를 갖는 블러링 커널에 의해 함께 블러링될 수 있다. 일부 실시형태들에서, 블러링 커널은 반사 정보의 주어진 피스가 전체 결과들을 제공하는데 얼마나 많은 기여를 하는지에 대한 가중치를 설정할 수 있다. 일부 구현들에서, 타원의 중심에 더 가까운 반사 정보는 타원의 에지부에 더 가까운 반사 정보보다 더 반사 결과에 더 크게 가중될 수 있다 (즉, 더 큰 영향을 미친다).19 illustrates examples 1900 of elongated reflection. 20 is a block diagram illustrating elongated reflections, according to one embodiment. Rough surface 2000 includes a plurality of microfacets 2002 that result in glossy reflections. Based on the grazing angle of the eye / camera 2004 relative to the light source 2006 (or source of reflection information), the glossy reflection can be unfolded. The shape of the elongated reflection generally takes the form of an ellipse as shown in FIG. Reflection data in the ellipse may be blurred together by a blurring kernel having the shape and size of the ellipse to generate reflection information for the pixels in the ellipse. In some embodiments, the blurring kernel can set weights for how much a given piece of reflection information contributes to providing overall results. In some implementations, reflection information closer to the center of the ellipse may be weighted more heavily (ie, have a greater impact) than reflection information closer to the edge of the ellipse.

도 21 은 일 실시형태에 따른 연신된 반사의 일 예이다. 오브젝트 (2104) 로부터 포인트 (2102) 에서 보여지는 반사는 타원 (2106) 의 형태를 취할 수도 있다. 타원 (2106) 은 장축 (2108) 및 단축 (2110) 을 갖는다. 장축 (2108) 및 단축 (2110) 의 길이들은 표면 조도 및 반사 각도에 기초하여 미리 연산되어 룩업 테이블에 저장될 수 있다. 일 구현에서, 타원 축은 단위 길이 벡터 (즉, 1 의 길이) 에 대한 것이다. 이와 같이, 타원의 사이즈는 아래 설명된 바와 같이, 평균 광선 길이와 투사에 기초하여 선형적으로 스케일링될 수 있다. 도 22 는 일 실시형태에 따라, 표면 조도 및 반사 각도에 기초하여 연신된 반사들을 나타내는 타원의 단축의 미리-연산된 길이의 플롯이다. 도 23 은 일 실시형태에 따라, 표면 조도 및 반사 각도에 기초하여 연신된 반사들을 나타내는 타원의 단축의 미리-연산된 길이의 플롯이다.21 is an example of elongated reflection, according to one embodiment. The reflection seen at point 2102 from object 2104 may take the form of an ellipse 2106. Ellipse 2106 has long axis 2108 and short axis 2110. The lengths of the long axis 2108 and the short axis 2110 may be precomputed and stored in the lookup table based on the surface roughness and the reflection angle. In one implementation, the ellipse axis is for a unit length vector (ie, a length of 1). As such, the size of the ellipse can be scaled linearly based on average beam length and projection, as described below. FIG. 22 is a plot of a pre-computed length of a minor axis of an ellipse representing drawn reflections based on surface roughness and reflection angle, according to one embodiment. FIG. 23 is a plot of a pre-computed length of an axis of ellipse representing elongated reflections based on surface roughness and reflection angle, according to one embodiment.

도 24 는 일 실시형태에 따른 글로시 반사들에 타원형 필터를 적용하는 일 예이다. 도시된 바와 같이, 포인트 (2402) 에서의 반사는 표면 조도 및 반사 각도에 기초하여 타원 형상을 취한다. 인접 오브젝트의 반사 정보는 오브젝트 상에 타원 (2404) 으로서 도시된다. 반사 영역에서의 반사 정보에 대한 위치는 연산되어 타원 (2406) 에 위치될 수 있다. 타원 (2406) 은 스크린 공간 (2408) 내에 투사되고 타원 (2410) 으로서 스케일링된다. 스크린 공간에서의 타원 (2410) 내의 반사 정보는 블러링 커널을 이용하여 함께 블러링되어 최종 반사 정보에 도달할 수 있다.24 is an example of applying an elliptical filter to glossy reflections according to one embodiment. As shown, the reflection at point 2402 takes an elliptic shape based on the surface roughness and the reflection angle. Reflection information of an adjacent object is shown as an ellipse 2404 on the object. The location for the reflection information in the reflection area can be computed and placed in the ellipse 2406. Ellipse 2406 is projected into screen space 2408 and scaled as ellipse 2410. Reflection information in ellipse 2410 in screen space may be blurred together using a blurring kernel to arrive at the final reflection information.

도 25 는 일 실시형태에 따라 타원형 필터를 적용하는 플로우 다이어그램이다. 단계 2502 에서, 주어진 이미지에 대해, 프로세서는 이미지에 도시된 오브젝트의 표면 조도를 결정한다. 도 25 의 프로세서는 도 1 의 프로세서 (110) 및 그래픽 프로세서 (116) 중 하나 또는 조합일 수 있다. 표면 조도는 글로시 반사를 초래하는 거친 표면을 나타낼 수도 있다.25 is a flow diagram of applying an elliptical filter in accordance with an embodiment. In step 2502, for a given image, the processor determines the surface roughness of the object shown in the image. The processor of FIG. 25 may be one or a combination of processor 110 and graphics processor 116 of FIG. 1. Surface roughness may indicate a rough surface that results in glossy reflections.

단계 2504 에서, 프로세서는 카메라/눈 포지션과 반사되는 오브젝트 사이의 반사 각도를 결정한다. 단계 2506 에서, 프로세서는 테이블에서 룩업을 수행하여 표면 조도 및 반사 각도에 기초하여 타원의 형상을 결정한다. 타원은 장축 및 단축을 갖는다.In step 2504, the processor determines a reflection angle between the camera / eye position and the reflected object. In step 2506, the processor performs a lookup on the table to determine the shape of the ellipse based on the surface roughness and the reflection angle. Ellipses have a long axis and a short axis.

단계 2508 에서, 프로세서는 반사되고 있는 오브젝트 상의 반사 정보의 위치를 결정한다. 반사 정보의 위치는 타원의 형태를 취한다. 단계 2510 에서, 프로세서는 반사 영역에서 반사 정보에 대한 위치를 결정한다. 반사 영역에서의 반사 정보의 위치는 또한 타원의 형태를 취한다. In step 2508, the processor determines the location of the reflection information on the object that is being reflected. The position of the reflection information takes the form of an ellipse. In step 2510, the processor determines a location for the reflection information in the reflection area. The position of the reflection information in the reflection area also takes the form of an ellipse.

단계 2512 에서, 프로세서는 반사 영역에서의 반사 정보에 대한 위치를 스크린 공간으로 투사하여 스케일링한다. 단계 2514 에서, 프로세서는 최종 반사 정보에 도달하기 위해 스크린 공간에서의 타원의 스케일된 투사에 블러링 커널을 적용한다. 일부 실시형태들에서, 블러링 커널은 반사 정보의 주어진 피스가 전체 결과들을 제공하는데 얼마나 많은 기여를 하는지에 대한 가중치를 설정할 수 있다. 일부 구현들에서, 타원의 중심에 더 가까운 반사 정보는 타원의 에지부에 더 가까운 반사 정보보다 더 반사 결과에 더 크게 가중될 수 있다 (즉, 더 큰 영향을 미친다). 다른 실시형태에서, 일련의 프레임들에 걸친 광선 방향들을 선택할 때, 타원의 중심에서 더 많은 광선들이 선택될 수 있다. 이와 같이, 각각의 광선은 동일한 가중치를 가질 수 있지만 타원의 중심에 더 많은 광선들이 클러스터링되어 있으므로 가중치는 내포적이다 (소위 "중요 샘플링").In step 2512, the processor projects and scales the position of the reflection information in the reflection area into screen space. In step 2514, the processor applies a blurring kernel to the scaled projection of the ellipse in screen space to arrive at the final reflection information. In some embodiments, the blurring kernel can set weights for how much a given piece of reflection information contributes to providing overall results. In some implementations, reflection information closer to the center of the ellipse may be weighted more heavily (ie, have a greater impact) than reflection information closer to the edge of the ellipse. In another embodiment, more rays may be selected at the center of the ellipse when selecting the light beam directions over the series of frames. As such, each ray may have the same weight but the weight is implicit because more rays are clustered in the center of the ellipse (so-called "important sampling").

다른 실시형태는 블러링 스테이지 동안 이용되는 타원 내에 복수의 포인트들을 생성할 수도 있다. 시간 필터링 (도 18) 은 이들 포인트 각각에 적용되어 이전 프레임에서 이들 포인트 각각을 룩업 할 수 있다. 가중치가 가장 높은 포인트들의 선택된 수 (예를 들어, 4-5 포인트들) 는 블러링에 이용된다. 이렇게 하면 시간 필터링의 품질을 향상시킬 수 있다. Another embodiment may generate a plurality of points within an ellipse used during the blurring stage. Temporal filtering (FIG. 18) may be applied to each of these points to look up each of these points in the previous frame. The selected number of highest weighted points (eg 4-5 points) is used for blurring. This can improve the quality of time filtering.

본원에 인용된 공개공보, 특허 출원들 및 특허들을 포함하는 모든 인용문헌은 각각의 문헌이 개별적으로 및 참고 문헌으로 인용되도록 지시된 것과 동일한 정도로 본원에 참고 문헌으로서 포함되며, 본 명세서에서 그 전체가 기재되어 있다.All citations, including publications, patent applications, and patents cited herein are hereby incorporated by reference to the same extent as if each document was indicated to be cited individually and as a reference. It is described.

본 발명을 기술하는 맥락에서 (특히 이하의 청구항의 문맥에서) 용어 "a" 및 "an" 및 "the" 및 "적어도 하나" 및 유사한 지시자의 사용은 달리 본원에 표시되거나 또는 문맥에 의해 명확하게 부정되지 않는 한, 단수 및 복수 양쪽 모두를 의미한다. 하나 이상의 아이템들의 리스트가 뒤따라오는 용어 "적어도 하나" (예를 들어, "A 및 B 중 적어도 하나") 의 이용은 달리 본원에 표시되거나 또는 문맥에 의해 명확하게 부정되지 않는한, 리스트된 아이템들로부터 선택되는 하나의 아이템 (A 또는 B) 또는 리스트된 아이템들의 둘 이상의 아이템들의 임의의 조합 (A와 B) 을 의미한다. 용어 "포함하는", "갖는", "함유하는" 및 "구비하는" 은 달리 명시하지 않는 한 개방형 용어 (즉, "포함하지만 이에 제한되지 않는"을 의미 함) 로 해석되어야 한다. 본원에서 값들의 범위의 열거는 단지 본원에 달리 지시되지 않는 한, 범위 내에 속하는 각각의 개별 값을 개별적으로 언급하는 약식 방법의 역할을 하도록 의도되며, 각각의 개별 값은 본원에서 개별적으로 인용된 바와 같이 본 명세서에 통합된다.The use of the terms “a” and “an” and “the” and “at least one” and similar indicators in the context of describing the present invention (particularly in the context of the following claims) is otherwise indicated herein or expressly indicated by the context. Unless negated, it means both singular and plural. The use of the term "at least one" (eg, "at least one of A and B") followed by a list of one or more items is as listed unless otherwise indicated herein or explicitly disclaimed by context. One item (A or B) selected from or any combination of two or more items of the listed items (A and B). The terms "comprising", "having", "containing" and "comprising" are to be interpreted as open terms (ie, meaning "including but not limited to") unless otherwise specified. Enumeration of a range of values herein is intended to serve as a shorthand way of individually referring to each individual value within a range, unless otherwise indicated herein, each individual value being as individually cited herein. As incorporated herein.

본원에 기술된 모든 방법들은 본원에서 달리 지시되지 않거나 또는 문맥에 명백하게 부정되지 한 임의의 적합한 순서로 수행될 수 있다. 여기에 제공된 임의의 그리고 모든 실시예들 또는 예시적인 언어 (예를 들어, "이를 테면") 의 이용은 달리 청구되지 않는 한 본 발명을 보다 잘 나타내도록 의도된 것이며 본 발명의 범위를 제한하지 않는다. 명세서에서 어떠한 언어도 본 발명의 실시에 필수적인 것으로 청구되지 않은 요소를 나타내는 것으로 해석되어서는 안된다.All of the methods described herein may be performed in any suitable order unless otherwise indicated herein or otherwise explicitly negated in the context. The use of any and all embodiments or exemplary language (eg, “such as”) provided herein is intended to better represent the invention unless otherwise claimed and does not limit the scope of the invention. . No language in the specification should be construed as indicating an element which is not claimed as essential to the practice of the invention.

본 발명의 바람직한 실시형태가 본원에 기술된다. 이들 바람직한 실시형태의 변형은 전술된 설명을 읽음으로써 당업자에게 명백해질 수 있다. 본 발명자는 숙련된 기술자가 그러한 변형을 적절하게 이용할 것으로 기대하고, 본 발명자는 본 발명이 본원에 구체적으로 기재된 것과 다르게 실시되도록 의도한다. 따라서, 본 발명은 적용가능한 법률에 의해 허용되는 바와 같이 본 명세서에 첨부된 청구항에 열거된 주제의 모든 수정 및 등가물을 포함한다. 또한, 본원에서 달리 지시되지 않는 경우 또는 문맥에 의해 명확히 모순되지 않는 한, 모든 가능한 변형에서 전술한 요소의 임의의 조합이 본 발명에 포함된다.Preferred embodiments of the invention are described herein. Modifications of these preferred embodiments may become apparent to those skilled in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate, and the inventors intend for the invention to be practiced otherwise than as specifically described herein. Accordingly, the present invention includes all modifications and equivalents of the subject matter listed in the claims appended hereto as permitted by applicable law. In addition, any combination of the foregoing elements is included in the present invention in all possible variations, unless expressly contradicted by context or otherwise indicated herein.

Claims (23)

컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은, 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨터로 하여금,
픽셀에서의 오브젝트의 표면의 조도 (roughness) 값을 결정하는 것;
상기 조도 값에 기초하여 상기 픽셀에 대해 발생하는 광선들의 수를 결정하는 것;
광선들의 수에서의 각각의 광선에 대해, 광선에 대한 광선 방향을 선택하는 것;
상기 광선들의 수에서의 각각의 광선에 대해, 상기 광선의 상기 광선 방향에 기초하여 상기 광선의 광선 진행 (ray marching) 을 수행하는 것;
광선 진행이 성공적인 각각의 광선에 대해, 광선 진행을 통해 발견된 상기 광선에 의해 교차되는 오브젝트의 컬러 정보를 저장하는 것;
광선 진행이 실패한 각각의 광선에 대해, 광선 트레이싱 (ray tracing) 을 통해 광선을 캐스팅하고, 광선 트레이싱을 통해 발견된 상기 광선에 의해 교차되는 오브젝트의 컬러 정보를 저장하는 것; 및
광선 진행을 통해 발견된 광선들에 의해 교차되는 오브젝트들의 상기 컬러 정보 및 광선 트레이싱을 통해 발견된 광선들에 의해 교차되는 오브젝트들의 상기 컬러 정보에 기초하여 상기 픽셀에 대한 반사 정보를 생성하는 것
에 의해 이미지에서 상기 픽셀에 대한 반사 정보를 생성하게 하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
A computer program stored on a computer readable medium,
The computer program, when executed by one or more processors, causes the computer to:
Determining a roughness value of the surface of the object in the pixel;
Determining the number of rays occurring for the pixel based on the illuminance value;
For each ray in the number of rays, selecting a ray direction for the ray;
For each ray in the number of rays, performing ray marching of the ray based on the ray direction of the ray;
For each ray for which ray progression is successful, storing color information of the object intersected by the ray found through the ray progression;
For each ray for which ray propagation has failed, casting a ray through ray tracing and storing color information of the object intersected by the ray found through ray tracing; And
Generating reflection information for the pixel based on the color information of the objects crossed by the rays found through ray propagation and the color information of the objects crossed by the rays found through ray tracing.
And generate reflection information for the pixel in the image by means of a computer program.
제 1 항에 있어서,
상기 광선들의 수는 적어도 2 개의 광선들이며, 상기 픽셀에 대한 반사 정보를 생성하는 것은 상기 적어도 2 개의 광선들에 의해 교차되는 상기 오브젝트들의 상기 컬러 정보를 어그리게이션하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
The number of light rays is at least two light rays, and generating reflection information for the pixel includes aggregating the color information of the objects crossed by the at least two light rays. Computer program stored in.
제 2 항에 있어서,
상기 적어도 2 개의 광선들에 의해 교차되는 상기 오브젝트들의 컬러 정보를 어그리게이션하는 것은 상기 적어도 2 개의 광선들에 의해 교차되는 상기 오브젝트들의 컬러 정보의 평균 컬러 값을 연산하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 2,
Aggregating color information of the objects intersected by the at least two light rays includes computing an average color value of the color information of the objects intersected by the at least two light rays. Computer program stored on media.
제 1 항에 있어서,
제 1 광선에 대한 광선 진행을 수행하는 것은 상기 제 1 광선에 대응하는 제 1 광선 방향으로 상기 이미지에서 픽셀 단위로 심도 값들을 조사하여 상기 이미지에서 상기 제 1 광선과 다른 오브젝트와의 교차부를 위치파악하려 하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
Performing ray propagation for a first ray irradiates depth values on a pixel-by-pixel basis in the image in the direction of the first ray corresponding to the first ray to locate the intersection of the first ray with another object in the image. A computer program stored on a computer readable medium, the computer program storing the computer program.
제 1 항에 있어서,
제 1 광선에 대해 광선 진행을 수행하는 것은,
장면에서의 오브젝트들의 심도 값들에 대응하는 데이터를 수신하는 것;
상기 장면에서의 오브젝트들의 심도 값들에 대응하는 다운샘플링된 데이터를 수신하는 것으로서, 상기 다운샘플링된 데이터는 상기 장면에서의 오브젝트들의 심도 값들에 대응하는 데이터의 보다 거친 표현을 포함하는, 상기 샘플링된 데이터를 수신하는 것; 및
상기 다운샘플링된 데이터에 기초하여 상기 이미지에서 상기 제 1 광선과 다른 오브젝트의 교차부를 위치파악하려 하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
Performing ray propagation with respect to the first ray,
Receiving data corresponding to depth values of objects in the scene;
Receiving the downsampled data corresponding to depth values of objects in the scene, the downsampled data comprising a coarser representation of data corresponding to depth values of objects in the scene. Receiving; And
Attempting to locate an intersection of the first ray and another object in the image based on the downsampled data.
제 1 항에 있어서,
광선이 상기 이미지에서 임의의 다른 오브젝트들과 교차함이 없이 상기 이미지에 대응하는 뷰포트의 에지에 대해 광선 진행되면, 광선 진행은 광선에 대해 실패하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
And if the ray propagates against an edge of a viewport corresponding to the image without intersecting the ray with any other objects in the image, the ray propagation fails for the ray.
제 1 항에 있어서,
상기 광선 트레이싱을 통해 상기 광선을 캐스팅하는 것은 상기 이미지에 대응하는 뷰포트 상의 포인트에서 기원하는 광선을 캐스팅하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
Casting the ray through the ray tracing comprises casting a ray originating at a point on a viewport corresponding to the image.
제 1 항에 있어서,
상기 이미지는 복수의 오브젝트들을 포함하는 3D (3 차원) 장면의 2D (2 차원) 래스터화된 이미지인, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 1,
And the image is a 2D (two-dimensional) rasterized image of a 3D (three-dimensional) scene that includes a plurality of objects.
컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨터로 하여금,
제 1 픽셀에서의 오브젝트의 표면의 제 1 조도 값을 결정하는 것;
상기 제 1 조도 값에 기초하여 상기 제 1 픽셀에 대해 발생하는 광선들의 수를 결정하는 것;
이미지에서 상기 제 1 픽셀의 임계 반경 내에서 제 2 픽셀을 식별하는 것;
상기 제 2 픽셀에서의 오브젝트의 표면의 제 2 조도 값을 결정하는 것;
상기 제 1 조도 값과 상기 제 2 조도 값 사이의 차이가 조도 임계값 미만이라고 결정하는 것;
상기 제 2 픽셀에 대응하는 반사 광선에 의해 교차되는 오브젝트의 컬러 정보를 결정하는 것; 및
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 오브젝트의 상기 컬러 정보에 기초하여 상기 제 1 픽셀에 대한 반사 정보를 생성하는 것
에 의해 이미지에서 제 1 픽셀에 대한 반사 정보를 생성하게 하고,
상기 제 1 픽셀은 픽셀들의 제 1 세트에 포함되고 상기 제 2 픽셀은 픽셀들의 제 2 세트에 포함되며,
상기 픽셀들의 제 2 세트에서의 픽셀들에 대응하는 반사 광선들에 의해 교차되는 오브젝트들의 컬러 정보는 광선 트레이싱 또는 광선 진행을 통하여 결정되고,
상기 픽셀들의 제 1 세트에서의 픽셀들에 대응하는 반사 광선들에 의해 교차되는 오브젝트들의 컬러 정보는 상기 픽셀들의 제 2 세트에서의 픽셀들에 대응하는 상기 반사 광선들에 의해 교차되는 상기 오브젝트들의 컬러 정보에 기초하여 결정되고,
상기 픽셀들의 제 1 세트 및 상기 픽셀의 제 2 세트는 체커보드 패턴으로 배열되는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
A computer program stored on a computer readable medium,
When the computer program is executed by one or more processors, it causes the computer to:
Determining a first roughness value of the surface of the object at the first pixel;
Determining the number of rays occurring for the first pixel based on the first illuminance value;
Identifying a second pixel within a threshold radius of the first pixel in the image;
Determining a second roughness value of the surface of the object at the second pixel;
Determining that a difference between the first illuminance value and the second illuminance value is less than an illuminance threshold;
Determining color information of the object intersected by the reflected light beam corresponding to the second pixel; And
Generating reflection information for the first pixel based on the color information of the object intersected by the reflection ray corresponding to the second pixel
To generate reflection information for the first pixel in the image,
The first pixel is included in a first set of pixels and the second pixel is included in a second set of pixels,
Color information of objects intersected by reflected rays corresponding to pixels in the second set of pixels is determined via ray tracing or ray propagation,
Color information of the objects intersected by the reflected rays corresponding to the pixels in the first set of pixels is the color of the objects intersected by the reflected rays corresponding to the pixels in the second set of pixels. Determined based on information,
And the first set of pixels and the second set of pixels are arranged in a checkerboard pattern.
제 9 항에 있어서,
상기 컴퓨터 프로그램을 실행시키는 것은 또한, 상기 컴퓨터로 하여금,
상기 제 1 픽셀에서의 상기 오브젝트의 표면의 제 1 배향 값을 결정하게 하고;
상기 제 2 픽셀에서의 상기 오브젝트의 표면의 제 2 배향 값을 결정하게 하고;
상기 제 1 배향 값과 상기 제 2 배향 값 사이의 차이가 배향 임계값 미만이라고 결정하게 하고,
상기 제 2 픽셀에 대응하는 반사 광선에 의해 교차되는 상기 오브젝트의 상기 컬러 정보에 기초하여 상기 제 1 픽셀에 대한 상기 반사 정보를 생성하는 것은 상기 제 1 배향 값과 상기 제 2 배향 값 사이의 차이가 배향 임계값 미만이라는 것에 기초하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 9,
Running the computer program also causes the computer to:
Determine a first orientation value of the surface of the object at the first pixel;
Determine a second orientation value of the surface of the object at the second pixel;
Determine that the difference between the first and second orientation values is less than an orientation threshold,
Generating the reflection information for the first pixel based on the color information of the object intersected by the reflected light rays corresponding to the second pixel may result in a difference between the first orientation value and the second orientation value. A computer program stored on a computer readable medium based on being below an orientation threshold.
제 10 항에 있어서,
상기 컴퓨터 프로그램을 실행시키는 것은 또한, 상기 컴퓨터로 하여금,
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치를 결정하게 하고; 그리고
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치가 광선 분포 내에서의 상기 제 1 픽셀로부터 도달가능한지의 여부를 결정하게 하고,
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 상기 컬러 정보에 기초하여 상기 제 1 픽셀에 대한 상기 반사 정보를 생성하는 것은 상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치가 상기 광선 분포 내에서의 상기 제 1 픽셀로부터 도달가능하다고 결정하는 것에 기초하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 10,
Running the computer program also causes the computer to:
Determine a location of the object intersected by the reflected light beam corresponding to the second pixel; And
Determine whether the position of the object intersected by the reflected light beam corresponding to the second pixel is reachable from the first pixel in the light beam distribution,
Generating the reflection information for the first pixel based on the color information of the object intersected by the reflection ray corresponding to the second pixel is crossed by the reflection ray corresponding to the second pixel. And based on determining that the location of the object is reachable from the first pixel within the ray distribution.
제 11 항에 있어서,
상기 광선 분포의 형상은 상기 제 1 픽셀에서 상기 오브젝트의 표면의 상기 제 1 조도 값에 기초하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 11,
And wherein the shape of the ray distribution is based on the first illuminance value of the surface of the object at the first pixel.
제 9 항에 있어서,
상기 컴퓨터 프로그램을 실행시키는 것은 또한, 상기 컴퓨터로 하여금,
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치를 결정하게 하고; 그리고
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치가 광선 분포 내에서의 상기 제 1 픽셀로부터 도달가능한지의 여부를 결정하게 하고,
상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 상기 컬러 정보에 기초하여 상기 제 1 픽셀에 대한 상기 반사 정보를 생성하는 것은 상기 제 2 픽셀에 대응하는 상기 반사 광선에 의해 교차되는 상기 오브젝트의 위치가 상기 광선 분포 내에서의 상기 제 1 픽셀로부터 도달가능하다고 결정하는 것에 기초하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 9,
Running the computer program also causes the computer to:
Determine a location of the object intersected by the reflected light beam corresponding to the second pixel; And
Determine whether the position of the object intersected by the reflected light beam corresponding to the second pixel is reachable from the first pixel in the light beam distribution,
Generating the reflection information for the first pixel based on the color information of the object intersected by the reflection ray corresponding to the second pixel is crossed by the reflection ray corresponding to the second pixel. And based on determining that the location of the object is reachable from the first pixel within the ray distribution.
제 9 항에 있어서,
상기 제 2 픽셀에 대응하는 상기 반사 광선은 상기 컬러 정보에 대응하는 상기 오브젝트와 교차하도록 광선 진행되는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 9,
And the reflected ray corresponding to the second pixel is ray propagated to intersect the object corresponding to the color information.
제 9 항에 있어서,
상기 제 2 픽셀에 대응하는 상기 반사 광선은 상기 컬러 정보에 대응하는 상기 오브젝트와 교차하도록 광선 트레이싱되는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 9,
And the reflected light beam corresponding to the second pixel is ray traced to intersect the object corresponding to the color information.
제 9 항에 있어서,
상기 픽셀들의 제 1 세트 및 상기 픽셀들의 제 2 세트는 체커보드 패턴으로 배열되는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 9,
And the first set of pixels and the second set of pixels are arranged in a checkerboard pattern.
컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은 하나 이상의 프로세서들에 의해 실행될 때, 컴퓨터로 하여금,
제 1 프레임에 대해, 제 1 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 위치를 결정하는 것으로서, 상기 오브젝트의 교차부의 위치는 타원의 형상에 대응하는, 상기 오브젝트의 교차부의 위치를 결정하는 것;
상기 제 1 프레임에 대해, 상기 제 1 픽셀에 대한 반사 광선에 기초하여 상기 오브젝트의 교차부의 반사 영역에서의 위치를 결정하는 것;
상기 제 1 프레임에 대해, 카메라의 제 1 위치를 향한 상기 제 1 픽셀에 대한 상기 반사 광선에 의한 상기 오브젝트의 교차부의 반사 영역에서의 위치로부터 제 1 라인을 투사하는 것;
상기 제 1 프레임에 대해, 상기 제 1 오브젝트의 표면 상의 상기 제 1 라인의 교차부의 위치를 결정하는 것;
제 2 프레임에 대해, 제 2 픽셀에 대한 반사 광선에 기초하여 오브젝트의 교차부의 위치를 결정하는 것으로서, 상기 제 2 프레임은 상기 제 1 프레임에 후속하는, 상기 교차부의 위치를 결정하는 것;
상기 제 2 프레임에 대해, 상기 제 2 픽셀에 대한 반사 광선에 기초하여 상기 오브젝트의 교차부의 반사 영역에서의 위치를 결정하는 것;
상기 제 2 프레임에 대해, 상기 카메라의 제 2 위치를 향한 상기 제 2 픽셀에 대한 상기 반사 광선에 의한 상기 오브젝트의 교차부의 반사 영역에서의 위치로부터 제 2 라인을 투사하는 것;
상기 제 2 프레임에 대해, 제 2 오브젝트의 표면 상의 상기 제 2 라인의 교차부의 위치를 결정하는 것;
상기 제 2 오브젝트의 표면 상의 상기 제 2 라인의 교차부의 위치의 표면 조도가 제 1 오브젝트의 표면 상의 제 1 라인의 교차부의 위치의 표면 조도의 임계 조도 내에 있다고 결정하는 것; 및
상기 제 1 픽셀에 대한 반사 정보에 기초하여 상기 제 2 픽셀에 대한 반사 정보를 생성하는 것
에 의해 반사 정보를 생성하게 하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
A computer program stored on a computer readable medium,
When the computer program is executed by one or more processors, it causes the computer to:
With respect to the first frame, determining the position of the intersection of the object based on the reflected light beam for the first pixel, wherein the position of the intersection of the object corresponds to the shape of the ellipse. ;
Determining, with respect to the first frame, a position in the reflective region of the intersection of the object based on the reflected light beam for the first pixel;
Projecting a first line relative to the first frame from a position in the reflective region of the intersection of the object with the reflected light beam relative to the first pixel towards the first position of the camera;
Determining, relative to the first frame, the location of the intersection of the first line on the surface of the first object;
For a second frame, determining the location of the intersection of the object based on the reflected light beam for the second pixel, wherein the second frame is subsequent to the first frame;
Determining, with respect to the second frame, a position in the reflective area of the intersection of the object based on the reflected light beam for the second pixel;
Projecting a second line relative to the second frame from a position in the reflective region of the intersection of the object by the reflected light beam relative to the second pixel towards the second position of the camera;
Determining, with respect to the second frame, the location of the intersection of the second line on the surface of the second object;
Determining that the surface roughness of the position of the intersection of the second line on the surface of the second object is within a critical roughness of the surface roughness of the position of the intersection of the first line on the surface of the first object; And
Generating reflection information for the second pixel based on the reflection information for the first pixel
Computer program, stored in a computer readable medium, for generating reflection information by means of a computer.
제 17 항에 있어서,
상기 제 1 오브젝트와 상기 제 2 오브젝트는 동일한 오브젝트를 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 17,
And the first object and the second object comprise the same object.
제 17 항에 있어서,
상기 제 2 픽셀에 대한 상기 반사 정보를 생성하는 것은 상기 제 2 픽셀에 대해 결정된 상기 반사 정보로 상기 제 1 픽셀에 대한 반사 정보를 블러링하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 17,
Generating the reflection information for the second pixel includes blurring the reflection information for the first pixel with the reflection information determined for the second pixel.
제 17 항에 있어서,
상기 제 1 픽셀에 대한 상기 반사 광선에 기초한 상기 오브젝트의 교차부의 위치는 복수의 반사 광선들에 기초한 어그리게이션된 위치를 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 17,
And the position of the intersection of the object based on the reflected light beam relative to the first pixel comprises an aggregated position based on a plurality of reflected light beams.
제 17 항에 있어서,
상기 컴퓨터 프로그램을 실행시키는 것은 또한, 상기 컴퓨터로 하여금,
상기 제 1 픽셀에서의 오브젝트의 표면 조도에 기초하여 상기 제 1 픽셀에 대한 다수의 반사 광선들을 발생시키도록 결정하게 하고; 그리고
상기 제 1 픽셀에서의 상기 오브젝트의 표면 조도 및 상기 카메라의 제 1 위치에 기초하여 타원의 형상을 결정하기 위해 데이터베이스에서 룩업을 수행하게 하고,
상기 제 1 픽셀에 대한 상기 다수의 반사 광선들에 기초한 상기 오브젝트의 교차부의 위치는 상기 타원의 형상에 기초하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 17,
Running the computer program also causes the computer to:
Determine to generate a plurality of reflected light rays for the first pixel based on the surface roughness of the object in the first pixel; And
Perform a lookup in a database to determine the shape of the ellipse based on the surface roughness of the object at the first pixel and the first position of the camera,
And the position of the intersection of the object based on the plurality of reflected rays relative to the first pixel is based on the shape of the ellipse.
제 21 항에 있어서,
상기 데이터베이스에서 룩업을 수행하는 것은 상기 타원의 장축에 대한 데이터를 획득하는 것 및 상기 타원의 단축에 대한 데이터를 획득하는 것을 포함하는, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 21,
Performing a lookup on the database comprises acquiring data for the long axis of the ellipse and acquiring data for the short axis of the ellipse.
제 17 항에 있어서,
이미지는 복수의 오브젝트들을 포함하는 3D (3 차원) 장면의 2D (2 차원) 래스터화된 이미지인, 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램.
The method of claim 17,
An image is a computer program stored on a computer readable medium, wherein the image is a 2D (two-dimensional) rasterized image of a 3D (three-dimensional) scene including a plurality of objects.
KR1020190035373A 2018-08-10 2019-03-27 Systems and methods for rendering reflections KR20200018207A (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US16/101,103 2018-08-10
US16/101,019 2018-08-10
US16/101,103 US10818079B2 (en) 2018-08-10 2018-08-10 Systems and methods for rendering reflections
US16/101,098 2018-08-10
US16/101,019 US10621774B2 (en) 2018-08-10 2018-08-10 Systems and methods for rendering reflections
US16/101,098 US10796474B2 (en) 2018-08-10 2018-08-10 Systems and methods for rendering reflections

Publications (1)

Publication Number Publication Date
KR20200018207A true KR20200018207A (en) 2020-02-19

Family

ID=69669642

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190035373A KR20200018207A (en) 2018-08-10 2019-03-27 Systems and methods for rendering reflections

Country Status (2)

Country Link
KR (1) KR20200018207A (en)
CN (1) CN110874858B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113628316B (en) * 2020-05-08 2023-12-01 辉达公司 Techniques for anisotropic texture filtering using ray cones

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011077623A1 (en) * 2009-12-24 2011-06-30 株式会社ソニー・コンピュータエンタテインメント Image processing device, image data generation device, image processing method, image data generation method, and data structure of image file
JP2014149286A (en) * 2013-01-31 2014-08-21 Nireco Corp Surface roughness measurement device
CN104183007B (en) * 2014-08-12 2017-02-15 中国科学院软件研究所 Thin film interference effect drawing method based on ray tracer
KR102129376B1 (en) * 2015-02-25 2020-07-02 페이스북, 인크. Identifying an object in a volume based on characteristics of light reflected by the object
US10049303B2 (en) * 2015-10-01 2018-08-14 Infinity Augmented Reality Israel Ltd. Method and a system for identifying reflective surfaces in a scene

Also Published As

Publication number Publication date
CN110874858B (en) 2024-04-09
CN110874858A (en) 2020-03-10

Similar Documents

Publication Publication Date Title
JP5120926B2 (en) Image processing apparatus, image processing method, and program
US6791540B1 (en) Image processing apparatus
CA2225017C (en) Method and apparatus for rapidly rendering computer generated images of complex structures
US7948487B2 (en) Occlusion culling method and rendering processing apparatus
EP3714433B1 (en) Ray-triangle intersection testing with tetrahedral planes
US7812837B2 (en) Reduced Z-buffer generating method, hidden surface removal method and occlusion culling method
KR102493461B1 (en) System and Method of rendering
US10970920B2 (en) Systems and methods for ray-traced shadows of transparent objects
US10586375B2 (en) Hybrid raytracing approach for modeling light reflection
US9761039B2 (en) Method and apparatus for hybrid rendering
US8654122B2 (en) Method, apparatus, and computer program product for improved graphics performance
GB2492227A (en) Improving sample test efficiency in graphics rendering
KR20160126329A (en) Method and apparatus for processing a image by performing adaptive sampling
US20160314611A1 (en) Ray tracing apparatus and method
JP2016085738A (en) Apparatus and method for hybrid rendering
JP5770295B2 (en) Backface culling for motion blur and depth of field
US10818079B2 (en) Systems and methods for rendering reflections
US10621774B2 (en) Systems and methods for rendering reflections
US10796474B2 (en) Systems and methods for rendering reflections
Schollmeyer et al. Efficient and anti-aliased trimming for rendering large NURBS models
KR20200018207A (en) Systems and methods for rendering reflections
KR100693134B1 (en) Three dimensional image processing
EP3876205A1 (en) Image generation system and method
JPH04155592A (en) Parametric curved surface display device by glow shading
JP2001291115A (en) Method for plotting three-dimensional graphic and recording medium with the method recorded thereon