WO2022092414A1 - 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법 - Google Patents

프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법 Download PDF

Info

Publication number
WO2022092414A1
WO2022092414A1 PCT/KR2020/017369 KR2020017369W WO2022092414A1 WO 2022092414 A1 WO2022092414 A1 WO 2022092414A1 KR 2020017369 W KR2020017369 W KR 2020017369W WO 2022092414 A1 WO2022092414 A1 WO 2022092414A1
Authority
WO
WIPO (PCT)
Prior art keywords
frame
ray tracing
chip
queue
frames
Prior art date
Application number
PCT/KR2020/017369
Other languages
English (en)
French (fr)
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
Application filed by 세종대학교산학협력단 filed Critical 세종대학교산학협력단
Priority to US18/034,842 priority Critical patent/US20230419587A1/en
Publication of WO2022092414A1 publication Critical patent/WO2022092414A1/ko

Links

Images

Classifications

    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Definitions

  • the present invention relates to a 3D graphic processing technology, and more particularly, a multi-chip-based ray tracing apparatus using frame division capable of performing graphic processing with improved performance using a plurality of chips independently performing ray tracing. and methods.
  • 3D graphic technology is a graphic technology using a three-dimensional representation of geometric data stored in computing, and is widely used in various industries including the media industry and the game industry today. In general, 3D graphic technology requires a separate high-performance graphic processor due to a large amount of computation.
  • Ray tracing technology is a rendering method based on Global Illumination. Reflection, refraction, and shadow effects are natural considering the effect of light reflected or refracted from other objects on the image of the current object. Because it is provided as a 3D image, realistic 3D images can be created.
  • An embodiment of the present invention is to provide a multi-chip-based ray tracing apparatus and method using frame division capable of performing graphic processing with improved performance using a plurality of chips independently performing ray tracing.
  • An embodiment of the present invention is based on a multi-chip implemented to independently include a tree building unit, and is based on a multi-chip using frame division that can provide performance improvement related to ray tracing in proportion to the number of chips used in the system.
  • An object of the present invention is to provide an apparatus and method for ray tracing.
  • a multi-chip-based ray tracing apparatus using frame division includes: a system memory for storing geometry data and an acceleration structure (AS) for scene generation; a plurality of ray tracing cores each performing independent ray tracing on an individual frame based on the geometric data and the acceleration structure; and a central processing unit that executes and manages a ray tracing application and a scene manager, and transmits the geometry data and the acceleration structure to the plurality of ray tracing cores.
  • AS acceleration structure
  • system memory is a PSS area for storing a primitive static scene (Primitive Static Scene), a PDS area for storing a Primitive Dynamic Scene and an AS area for storing static acceleration structures and dynamic acceleration structures, respectively.
  • a primitive static scene Primary Static Scene
  • PDS area for storing a Primitive Dynamic Scene
  • AS area for storing static acceleration structures and dynamic acceleration structures, respectively.
  • Each of the plurality of ray tracing cores is a bus interface unit for processing data transmission and reception (Bus Interface Unit); Tree Build Unit (TBU) that builds an acceleration structure (AS); a ray tracing unit (RTU) for performing ray tracing based on the acceleration structure (AS); and a local memory for temporarily storing the geometric data and the acceleration structure for the ray tracing.
  • Bus Interface Unit for processing data transmission and reception
  • TBU Tree Build Unit
  • AS acceleration structure
  • RTU ray tracing unit
  • AS ray tracing unit
  • the ray tracing apparatus may further include a frame unit for arranging and outputting frames received from the plurality of ray tracing cores in an order.
  • the frame unit may include: a plurality of frame buffers allocated to each of the plurality of ray tracing cores to store the frames according to a processing order; and a frame queue for storing frames received from the plurality of frame buffers according to frame numbers regardless of the processing order.
  • Each of the plurality of frame buffers may have the same size, and the size of the frame queue may be determined according to the number and size of the frame buffers.
  • the frame unit may store the specific frame in the frame queue by matching a corresponding frame number to a queue index for a specific frame stored in the frame buffer.
  • the frame unit reading a current draw number; comparing the draw number with frame numbers of frames stored in the frame queue, respectively; outputting a corresponding frame when the draw number is the same as the frame number; incrementing the draw number by 1 when the output is successful; and repeating until the frame queue becomes empty.
  • a multi-chip-based ray tracing method using frame division determines the total number of a plurality of ray tracing cores for ray tracing for a plurality of frames constituting a specific scene. to do; dividing the plurality of frames into frame units and assigning them to each of the plurality of ray tracing cores; transmitting geometric data of a system memory to each of the plurality of ray tracing cores; determining whether ray tracing is completed on a frame-by-frame basis in each of the plurality of ray tracing cores; When ray tracing is completed in a specific ray tracing core, storing the corresponding frame in a corresponding frame buffer; storing the corresponding frame in a frame queue; and sequentially outputting the frames of the frame queue.
  • Determining the total number of the plurality of ray tracing cores includes initializing a draw number, and the outputting includes outputting a frame having the same frame number as a current draw number from the frame queue. may include steps.
  • the outputting may include increasing the current draw number by one when the outputting is successful.
  • Allocating to each of the plurality of ray tracing cores includes assigning a frame number to the allocated frame, the frame number is set for each ray tracing core and an interval equal to the total number based on the previous frame number can be set to
  • rendering of the specific scene may be terminated.
  • the disclosed technology may have the following effects. However, this does not mean that a specific embodiment should include all of the following effects or only the following effects, so the scope of the disclosed technology should not be understood as being limited thereby.
  • a multi-chip-based ray tracing apparatus and method using frame division may perform graphic processing with improved performance using a plurality of chips independently performing ray tracing.
  • a multi-chip-based ray tracing apparatus and method using frame division provides ray tracing in proportion to the number of chips used in a system based on a multi-chip implemented to independently include a tree building unit. may provide performance improvements.
  • FIG. 1 is a view for explaining an embodiment of a ray tracing process.
  • FIG. 2 is a diagram for explaining an embodiment of a KD tree as an acceleration structure used in a ray tracing process.
  • FIG. 3 is a diagram for explaining a multi-chip ray tracing system of a screen division method.
  • FIG. 4 is a diagram illustrating a frame division multi-chip ray tracing system according to the present invention.
  • FIG. 5 is a view for explaining an operation of arranging a frame according to a display order.
  • FIG. 6 is a flowchart illustrating an operation process of a frame division multi-chip ray tracing method according to the present invention.
  • first and second are for distinguishing one component from another, and the scope of rights should not be limited by these terms.
  • a first component may be termed a second component, and similarly, a second component may also be termed a first component.
  • identification numbers eg, a, b, c, etc. are used for convenience of description, and identification numbers do not describe the order of each step, and each step clearly indicates a specific order in context. Unless otherwise specified, it may occur in a different order from the specified order. That is, each step may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.
  • the present invention can be embodied as computer-readable codes on a computer-readable recording medium
  • the computer-readable recording medium includes all types of recording devices in which data readable by a computer system is stored.
  • Examples of the computer-readable recording medium include ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, and the like.
  • the computer-readable recording medium is distributed in a computer system connected to a network, so that the computer-readable code can be stored and executed in a distributed manner.
  • FIG. 1 is a view for explaining an embodiment of a ray tracing process.
  • a ray tracing method performed by a ray tracing apparatus may correspond to a rendering method according to global illumination. This may mean that light reflected or refracted from another object also affects the image of the current object. Because of this, reflection, refraction, and shadow effects are naturally provided, so that realistic 3D images can be created.
  • the ray tracing apparatus may first generate a primary ray (P) from a camera position for each pixel and perform a calculation to find an object that meets the ray.
  • the ray tracing device generates a reflection ray (R) for a reflection effect or a refraction ray (F) for a refraction effect at the location where the ray and the object meet if the object that meets the ray has a property of reflection or refraction.
  • Reflected ray and refractive ray are called secondary ray, and the ray tracing device can perform calculations for each ray to find an object that intersects that ray. This process may be performed recursively by the ray tracing device.
  • FIG. 2 is a diagram for explaining an embodiment of a KD tree as an acceleration structure used in a ray tracing process.
  • acceleration such as a K-Dimensional Tree or BVH (Bounding Volume Hierarchy) generated based on total geometry data (consisting of triangle coordinates) in order to perform ray tracing
  • An Acceleration Structure (AS) is essential. Therefore, it is necessary to build the AS before performing ray tracing. Building such an acceleration structure (AS build) may take a lot of time because a large amount of computation is required.
  • the kd-tree may correspond to a binary tree having a hierarchical structure with respect to the divided space.
  • a kd-tree can be composed of an inner node (including a top node) and a leaf node, and a leaf node corresponds to a space containing objects that intersect with the corresponding node.
  • the kd-tree is a spatial partitioning tree and may correspond to a kind of spatial partitioning structure.
  • an internal node may have a spatial region based on a bounding box, and the spatial region may be divided into two regions and allocated to two lower nodes.
  • the inner node may be composed of a sub-tree of a division plane and two regions divided through it, and a leaf node may include only a series of triangles.
  • a leaf node may include a triangle list for pointing to at least one triangle information included in the geometric data, the triangle information including vertex coordinates, normal vectors, and/or texture coordinates for three points of the triangle. can do. If the triangle information included in the geometric data is implemented as an array, the triangle list included in the leaf node may correspond to the array index.
  • the position p that divides the space may correspond to a point where the cost (number of node visits, the number of times to calculate whether a triangle is intersected, etc.) for finding a triangle that hits a random ray is the minimum, and , the most currently used method to find the corresponding position p may correspond to a surface area heuristic (SAH).
  • SAH surface area heuristic
  • FIG. 3 is a diagram for explaining a multi-chip ray tracing system of a screen division method.
  • the screen division type multi-chip ray tracing system 100 may perform scene rendering by utilizing n multi-chips (ASICs or FPGAs).
  • the screen division type multi-chip ray tracing system 100 may include a central processing unit (CPU) 110 , a system memory 120 , and multi-chips.
  • the CPU 110 may execute and manage a ray tracing application and a scene manager.
  • the CPU 110 may also serve to transmit geometry data and acceleration structure data AS data of the system memory to each of the multi-chips 130 .
  • the multi-chip 130 may include a bus interface unit, a ray tracing unit (RTU), and a local memory for received geometric data and acceleration structure data.
  • RTU ray tracing unit
  • any one of the multi-chips (chip #1 in FIG. 3) may play a role of dividing and distributing the screen area, and a tree building unit for generating a kd-tree. (TBU, Tree Build Unit) can be included.
  • TBU Tree Build Unit
  • the operation process in the multi-chip ray tracing system 100 of the screen division method may be as follows.
  • the tree building unit (TBU) of Chip #1 can build a kd tree as a space division structure by receiving geometric data for a frame to be rendered.
  • Chip #1 When the construction of the kd tree in the multi-chip ray tracing system 100 of the screen division method is completed on Chip #1, the kd tree information can be transmitted to the ray tracing units (RTUs) #1 to #n, respectively, and each ray tracing unit ( RTU) may perform ray tracing based on this.
  • Chip #1 can serve as a load master that allocates a region to be ray-traced by the ray tracing unit (RTU) of each chip, and sets the frame to be rendered to k*k pixels (eg, For example, the frame area can be divided into blocks of 8*8) units and distributed to each chip.
  • a ray tracing unit (RTU) of each chip may perform ray tracing on an allocated area, and the generated color result may be stored in a frame buffer of chip #1 through a memory controller. Finally, each chip can perform ray tracing on an area corresponding to 1/n of a frame.
  • RTU ray tracing unit
  • the screen division method may correspond to a method in which a plurality of ray tracing units (RTUs) divide and render one frame.
  • RTUs ray tracing units
  • all ray tracing units (RTUs) require kd tree information for a corresponding frame, large-scale data transmission may occur. This is because a chip equipped with a tree building unit (TBU) must build a kd tree for the frame and transmit it to all ray tracing units (RTUs).
  • TBU tree building unit
  • This large-scale data transmission amount may increase as the number of chips used in the system increases. If the number of chips is n, data transmission for the kd tree may occur n times per frame. As a result, a total data transmission amount of n*m may occur for a scene including m frames.
  • FIG. 4 is a diagram illustrating a frame division multi-chip ray tracing system according to the present invention.
  • the frame division type multi-chip ray tracing system 200 has a central processing unit (CPU) 110 and a system memory (System Memory) in the same way as the screen division type multi-chip ray tracing system 100.
  • the CPU 110 may execute and manage a ray tracing application and a scene manager, and may transmit geometric data and an acceleration structure to the plurality of ray tracing cores 230 .
  • the system memory 120 may store geometry data for scene generation and an acceleration structure (AS).
  • AS acceleration structure
  • the system memory 120 has a PSS area for storing a Primitive Static Scene, a PDS area for storing a Primitive Dynamic Scene, and an AS for storing static and dynamic acceleration structures, respectively. It may contain regions.
  • the frame division type multi-chip ray tracing system 200 may include a plurality of ray tracing cores 230 each performing independent ray tracing on an individual frame based on geometric data and an acceleration structure.
  • each of the plurality of ray tracing cores 230 is a bus interface unit 231 that processes data transmission and reception, and a tree build unit (TBU, Tree) that builds an acceleration structure (AS).
  • TBU tree build unit
  • AS acceleration structure
  • Build Unit 232
  • RTU Ray Tracing Unit
  • RTU Ray Tracing Unit
  • Local Memory a local memory that temporarily stores geometric data and acceleration structures for ray tracing
  • the tree building unit (TBU) 232 may perform an operation of building the acceleration structure AS as a spatial partitioning structure.
  • the tree building unit 232 may generate an acceleration structure such as a Bounding Volume Hierarchy (BVH) or a K-Dimensional Tree (K-Dimensional Tree) based on the geometric data stored in the system memory 120 , and can be stored in memory.
  • BVH Bounding Volume Hierarchy
  • K-Dimensional Tree K-Dimensional Tree
  • the tree building unit 232 may generate an acceleration structure for a static scene and a dynamic scene necessary for a ray tracing process according to the operation of an application such as a 3D game engine.
  • an application such as a 3D game engine.
  • static AS static acceleration structure
  • dynamic AS dynamic acceleration structure
  • the static and dynamic acceleration structures generated by the tree building unit (TBU) are stored in the local memory of the corresponding ray tracing core, respectively, and can be used later in the ray tracing process.
  • the ray tracing unit (RTU) 233 may perform ray tracing based on a spatial partitioning structure, that is, an acceleration structure. More specifically, the ray tracing unit (RTU) 233 may perform ray tracing using the dynamic and static acceleration structures generated by the tree building unit (TBU) 232 , wherein the dynamic and static acceleration structures are respectively It may be stored in a local memory (local memory).
  • a spatial partitioning structure that is, an acceleration structure. More specifically, the ray tracing unit (RTU) 233 may perform ray tracing using the dynamic and static acceleration structures generated by the tree building unit (TBU) 232 , wherein the dynamic and static acceleration structures are respectively It may be stored in a local memory (local memory).
  • the multi-chip ray tracing system 200 of the frame division method according to the present invention is implemented by including an independent tree build unit (TBU) in all chips, that is, each of the ray tracing cores 230 , unlike the screen division method of FIG. 3 .
  • TBU tree build unit
  • the multi-chip ray tracing system 200 of the frame division method may operate in a manner of independently performing rendering of one frame in a ray tracing core corresponding to one chip. Therefore, since all chips are equipped with RTU and TBU, kd tree construction and ray tracing for the allocated frame can be independently performed. Additional data transmission such as transmitting the ray tracing result value to the frame buffer of a specific chip (Chip #1 in the case of FIG. 3) may not be required.
  • the screen division method may increase the total data transmission amount, whereas the frame division method may maintain the existing level without changing the total data transmission amount. That is, in the frame division method, when the number of chips used in the system is n, the total data transmission amount for a scene consisting of m frames may always be constantly maintained as m.
  • the screen division method improves performance as the number of RTUs increases, whereas in the case of kd tree construction, parallelization may be very difficult algorithmically, and it is difficult to achieve performance improvement even if the number of TBUs increases.
  • FIG. 3 in the screen division method, a plurality of chips can generate one frame, and as the number of chips increases, the number of RTUs increases to improve rendering performance, while the performance of TBU can remain unchanged. .
  • the performance difference between the RTU and the TBU may become large, which may act as a constraint on improving the performance of the entire system.
  • the frame division method of FIG. 4 may correspond to a method in which a plurality of chips each generate a frame, and each chip may be implemented to include an RTU and a TBU. That is, as the number of chips increases, the RTU and TBU may increase, and the number of frames that can be generated at the same time may increase proportionally. In the frame division method, as the number of chips installed in the system increases, performance improvement can be expected in proportion to it.
  • the multi-chip ray tracing system 200 of the frame division method may be implemented by further comprising a frame unit 240 for arranging and outputting frames received from the plurality of ray tracing cores 230 in order.
  • the frame unit 240 may correspond to a logical configuration of the multi-chip ray tracing system 200 of the frame division method, and is implemented as an independent module performing the corresponding operation or a logical set of functions performed by other modules. may correspond to Accordingly, although the frame unit 240 is expressed as an independent unit in FIG. 4 , it is not necessarily limited thereto, and may be functionally dispersed and embodied as an internal operation of other units or a linked operation between other units.
  • FIG. 5 is a view for explaining an operation of arranging a frame according to a display order.
  • the frame division type multi-chip ray tracing system 200 may arrange and output frames received from the plurality of ray tracing cores 230 through the frame unit 240 in order.
  • the frame unit 240 is allocated to each of the plurality of ray tracing cores 230 and is configured from a plurality of frame buffers 241 and a plurality of frame buffers 241 for storing frames according to a processing order.
  • a frame queue 242 for storing received frames according to a frame number regardless of a processing order may be included.
  • the frame division method may correspond to a method of simultaneously generating many frames and displaying them on a screen. In this case, since the order in which generation of frames is completed does not necessarily coincide with the display order, if the generated frames are stored in the frame buffer 241 without post-processing as they are, the display order may be out of order.
  • the frame unit 240 may be implemented by logically including independent frame buffers 241 included in each of the plurality of ray tracing cores 230 and a frame queue 242 interworking with the corresponding buffers. .
  • each of the plurality of frame buffers 241 may have the same size, and the size of the frame queue 242 may be determined according to the number and size of the frame buffers 241 .
  • the frame buffer 241 of each chip may be composed of three buffers, and the size of the frame queue 242 interworking with the frame buffer 241 of each chip is determined by the frame buffer ( 241) may be determined to be 9 in proportion to the number (eg, 3) and the size (eg, 3). That is, the frame unit 240 may arrange frames processed in various chips according to an actual order through the frame buffers 241 formed in each chip and the frame queue 242 interworking therewith.
  • the frame unit 240 may store a specific frame in the frame queue 242 by matching a corresponding frame number to a queue index for a specific frame stored in the frame buffer 241 .
  • the frame number may match the display order
  • the initial value may be determined by the chip number
  • the chip number may correspond to an identification number assigned to each ray tracing core.
  • Chip #1 may generate frame #1
  • Chip #2 may generate frame #2
  • Chip #3 may generate frame #3.
  • the frame number of the frame to which each chip is allocated may be calculated by adding the number of chips used in the system to the frame number of the first allocated frame.
  • frame #1 is stored in frame buffer 1 of Chip #1
  • frame number # (1 (chip number) + n (total number of chips)) is stored in frame buffer 2 in turn, frame buffer 3 In , frame number #(1+2n) may be stored.
  • the frame stored in the frame buffer 241 may be stored in the frame queue 242 .
  • the frame unit 240 may store a specific frame in the frame queue 242 by matching a corresponding frame number to a queue index for a specific frame stored in the frame buffer 241 .
  • frames #1, #(1+n), #(1+2n) stored in frame buffers #1, #2, #3 of Chip #1 are frame queue #1, #(1+n), respectively. , can be stored in #(1+2n).
  • the frame unit 240 reads the current draw number, compares the draw number with the frame number of the frames stored in the frame queue 242, respectively, the draw number equals the frame number
  • the operation may be performed through the steps of outputting the corresponding frame, increasing the draw number by 1 if the output is successful, and repeating the corresponding operations until the frame queue 242 becomes empty.
  • the frame unit 240 may output the frames stored in the frame queue 242 to the screen through a draw.
  • the draw order may be determined by a draw number.
  • the draw number may correspond to an identification number used to determine the draw order.
  • the frame unit 240 may start a draw operation in a state in which the draw number is initialized to 1, and may increase the draw number by 1 whenever a draw is performed.
  • the draw operation performed by the ray tracing system may correspond to an operation of distributing the frame on the screen if a frame having a frame number matching the draw number is in the frame queue 242, and waiting if there is no frame. Accordingly, drawing may be sequentially performed from frame #1, and this may be processed in the same order as the display order.
  • Chip#1, #2, and #3 generate frames #1, #2, and #3, respectively, and thereafter, #4, #5, and #6 in which the total number of chips are added may be generated.
  • Each chip (ray tracing core) has three frame buffers, and the generated frames may be sequentially stored in the frame buffer.
  • Frames #1, #4, and #7 are stored in frame buffers 1, 2, and 3 of chip #1, respectively
  • frames #2, #5, and #8 are stored in frame buffers 1, 2, and 3 of chip #2, respectively.
  • frames #3, #6, and #9 may be stored in frame buffers 1, 2, and 3 of chip #3.
  • Frames stored in the frame buffer of each chip may be stored in the frame queue 242 of the same order as the frame number.
  • Frames #1, #4, and #7 stored in frame buffers 1, 2, and 3 of chip #1 are stored in frame queues 1, 4, and 7, respectively, and the frames stored in frame buffers of chips #2 and #3 are also the same. may be stored in the frame queue 242 in this way.
  • Frames stored in the frame queue 242 are sequentially scattered on the screen by draw, and the draw may be sequentially performed from frame queue 1 by comparing the draw number with the frame number. In this case, the draw number may be incremented by one when a draw is performed.
  • FIG. 6 is a flowchart illustrating an operation process of a frame division multi-chip ray tracing method according to the present invention.
  • the frame division-based multi-chip ray tracing method according to the present invention may be performed as follows.
  • the frame assignment step S620 may correspond to a step of assigning a frame to be rendered to each chip.
  • the utilized chips are #1, #2, and ⁇ #n, frames #1, #2, and ⁇ #n may be allocated to each chip.
  • each chip may receive geometry information for the allocated frame. Thereafter, in a rendering done step S640 , rendering may be performed based on the received geometry information.
  • a frame buffer storage step (S650) of storing the resulting image in a frame buffer and a frame number setting step (S690) of setting the frame number of the frame to be rendered next may proceed. there is.
  • the rendered frame may be stored in a frame buffer allocated to a corresponding chip.
  • the Store to frame queue step S660 is a step of storing the frames stored in the frame buffer of each chip as a frame queue, and the size of the frame queue may be equal to the total number of frame buffers.
  • the frame number can be checked and stored in the frame queue at the appropriate location.
  • the position of the frame queue in which the frame is to be stored may be determined as the remaining value of the result of dividing the frame number by the size of the frame queue.
  • the frame number and draw number comparison step ( S670 ) it may be checked whether the frame number and the draw number of the frame stored in the frame queue are the same. If the two values are not the same, it waits, and if they are the same, a corresponding frame may be drawn and displayed through a draw frame step ( S680 ). When the draw is in progress, the draw number increases by 1, and the process returns to the step of comparing with the frame number ( S670 ) to check whether the stored frame is the same as the draw number.
  • a frame number for a frame to be reassigned to the chip may be set. This is determined by the total number of chips, and can be calculated by adding the total number of chips to the frame number received initially. If the chip #1 is initially assigned the frame #1 and the total number of chips is 3, thereafter, frame numbers may be set to #4, #7, and #10. If chip #2 is initially assigned frame #2, frame numbers may be set to #5, #8, and #11 thereafter.
  • the step of comparing the frame number and the total frame number (m) may correspond to the step of comparing the frame number set in the frame number setting step ( S690 ) with the total number of frames of a scene. If the set frame number is less than m, each chip performs rendering on the corresponding frame, and if it is greater than m, rendering on the corresponding scene may be terminated.
  • central processing unit 120 system memory
  • frame unit 241 frame buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

본 발명은 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치 및 방법에 관한 것으로, 상기 장치는 장면(scene) 생성을 위한 기하데이터(geometry data)와 가속 구조(AS, Acceleration Structure) 저장하는 시스템 메모리; 각이 상기 기하데이터와 가속 구조를 기초로 개별 프레임에 관한 독립된 레이 트레이싱을 수행하는 복수의 레이 트레이싱 코어들; 및 레이 트레이싱(ray tracing) 어플리케이션 및 장면 매니저(scene manager)를 실행하고 관리하며 상기 복수의 레이 트레이싱 코어들에게 상기 기하데이터와 가속 구조를 전달하는 중앙 처리 유닛을 포함한다.

Description

프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법
본 발명은 3차원 그래픽 처리 기술에 관한 것으로, 보다 상세하게는 레이 트레이싱을 독립적으로 수행하는 다수의 칩을 이용하여 향상된 성능의 그래픽 처리를 수행할 수 있는 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법에 관한 것이다.
3차원 그래픽 기술은 컴퓨팅에 저장된 기하학적 데이터(Geometric data)의 3차원 표현을 사용하는 그래픽 기술로, 오늘날 미디어 산업과 게임 산업을 포함하는 다양한 산업에서 널리 사용되고 있다. 일반적으로 3차원 그래픽 기술은 많은 연산량으로 인하여 별개의 고성능 그래픽 프로세서를 요구한다.
최근 프로세서의 발전에 따라 매우 현실적인 3차원 그래픽을 생성할 수 있는 레이 트레이싱(Ray Tracing) 기술이 연구되고 있다.
레이 트레이싱(Ray Tracing) 기술은 전역 조명(Global Illumination)에 따른 렌더링(Rendering)방식으로, 다른 물체에서 반사되거나 굴절된 빛이 현재 물체의 영상에 미치는 영향을 고려하여 반사, 굴절, 그림자 효과가 자연적으로 제공되기 때문에 현실감 있는 3D 영상을 생성할 수 있다.
[선행기술문헌]
[특허문헌]
한국공개특허 제10-2015-0039493호 (2015.04.10)
본 발명의 일 실시예는 레이 트레이싱을 독립적으로 수행하는 다수의 칩을 이용하여 향상된 성능의 그래픽 처리를 수행할 수 있는 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 트리 빌드 유닛을 독립적으로 포함하도록 구현된 멀티칩을 기반으로 시스템에서 사용되는 칩의 개수에 비례하여 레이 트레이싱에 관한 성능 향상을 제공할 수 있는 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치는 장면(scene) 생성을 위한 기하데이터(geometry data)와 가속 구조(AS, Acceleration Structure) 저장하는 시스템 메모리; 각이 상기 기하데이터와 가속 구조를 기초로 개별 프레임에 관한 독립된 레이 트레이싱을 수행하는 복수의 레이 트레이싱 코어들; 및 레이 트레이싱(ray tracing) 어플리케이션 및 장면 매니저(scene manager)를 실행하고 관리하며 상기 복수의 레이 트레이싱 코어들에게 상기 기하데이터와 가속 구조를 전달하는 중앙 처리 유닛을 포함한다.
제1항에 있어서, 상기 시스템 메모리는 원시 정적 장면(Primitive Static Scene)을 저장하는 PSS 영역, 동적 장면(Primitive Dynamic Scene)을 저장하는 PDS 영역 및 정적 가속 구조와 동적 가속 구조들을 각각 저장하는 AS 영역들을 포함할 수 있다.
상기 복수의 레이 트레이싱 코어들 각각은 데이터 송·수신을 처리하는 버스 인터페이스 유닛(Bus Interface Unit); 가속 구조(AS)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit); 상기 가속 구조(AS)를 기초로 레이 트레이싱을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit); 및 상기 레이 트레이싱을 위해 상기 기하데이터와 상기 가속 구조를 임시 저장하는 로컬 메모리(Local Memory)를 포함할 수 있다.
상기 레이 트레이싱 장치는 상기 복수의 레이 트레이싱 코어들로부터 수신된 프레임들을 순서에 따라 정렬하여 출력하는 프레임 유닛을 더 포함할 수 있다.
상기 프레임 유닛은 상기 복수의 레이 트레이싱 코어들 각각에 할당되어 상기 프레임들을 처리 순서에 따라 저장하는 복수의 프레임 버퍼들; 및 상기 복수의 프레임 버퍼들로부터 수신한 프레임들을 상기 처리 순서와 상관없이 프레임 넘버에 따라 저장하는 프레임 큐(queue)를 포함할 수 있다.
상기 복수의 프레임 버퍼들 각각은 동일 크기로 형성되고, 상기 프레임 큐의 크기는 상기 프레임 버퍼의 개수 및 크기에 따라 결정될 수 있다.
상기 프레임 유닛은 상기 프레임 버퍼에 저장된 특정 프레임에 대해 해당 프레임 넘버를 큐 인덱스에 대응시켜 상기 특정 프레임을 상기 프레임 큐에 저장할 수 있다.
상기 프레임 유닛은 현재의 드로우 넘버(draw number)를 읽는 단계; 상기 드로우 넘버와 상기 프레임 큐에 저장된 프레임들의 프레임 넘버를 각각 비교하는 단계; 상기 드로우 넘버가 상기 프레임 넘버와 동일하면 해당 프레임을 출력하는 단계; 상기 출력에 성공한 경우 상기 드로우 넘버를 1 증가시키는 단계; 및 상기 프레임 큐가 공백이 될 때까지 반복하는 단계를 통해 동작할 수 있다.
실시예들 중에서, 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법은 특정 장면(scene)을 구성하는 복수의 프레임들에 대한 레이 트레이싱을 위해 복수의 레이 트레이싱 코어들의 총 개수를 결정하는 단계; 상기 복수의 프레임들을 프레임 단위로 분할하여 상기 복수의 레이 트레이싱 코어들 각각에 할당하는 단계; 상기 복수의 레이 트레이싱 코어들 각각에게 시스템 메모리의 기하데이터를 전송하는 단계; 상기 복수의 레이 트레이싱 코어들 각각에서 프레임 단위로 레이 트레이싱의 완료 여부를 결정하는 단계; 특정 레이 트레이싱 코어에서 레이 트레이싱이 완료된 경우 해당 프레임을 해당 프레임 버퍼에 저장하는 단계; 상기 해당 프레임을 프레임 큐(queue)에 저장하는 단계; 및 상기 프레임 큐의 프레임들을 순차적으로 출력하는 단계를 포함한다.
상기 복수의 레이 트레이싱 코어들의 총 개수를 결정하는 단계는 드로우 넘버(draw number)를 초기화 하는 단계를 포함하고, 상기 출력하는 단계는 상기 프레임 큐에서 현재의 드로우 넘버와 동일한 프레임 넘버의 프레임을 출력하는 단계를 포함할 수 있다.
상기 출력하는 단계는 상기 출력에 성공한 경우 상기 현재의 드로우 넘버를 1만큼 증가시키는 단계를 포함할 수 있다.
상기 복수의 레이 트레이싱 코어들 각각에 할당하는 단계는 할당된 프레임에 프레임 넘버를 부여하는 단계를 포함하고, 상기 프레임 넘버는 레이 트레이싱 코어 별로 설정되고 이전의 프레임 넘버를 기준으로 상기 총 개수 만큼의 간격으로 설정될 수 있다.
상기 프레임 넘버가 상기 복수의 프레임들의 총 개수보다 큰 경우 상기 특정 장면(scene)에 대한 렌더링(rendering)이 종료될 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법은 레이 트레이싱을 독립적으로 수행하는 다수의 칩을 이용하여 향상된 성능의 그래픽 처리를 수행할 수 있다.
본 발명의 일 실시예에 따른 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법은 트리 빌드 유닛을 독립적으로 포함하도록 구현된 멀티칩을 기반으로 시스템에서 사용되는 칩의 개수에 비례하여 레이 트레이싱에 관한 성능 향상을 제공할 수 있다.
도 1은 레이 트레이싱 과정의 일 실시예를 설명하는 도면이다.
도 2는 레이 트레이싱 과정에서 사용되는 가속 구조로서 KD 트리의 일 실시예를 설명하는 도면이다.
도 3은 화면 분할 방식의 멀티칩 레이 트레이싱 시스템을 설명하는 도면이다.
도 4는 본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템을 설명하는 도면이다.
도 5는 디스플레이 순서에 따른 프레임 정렬 동작을 설명하는 도면이다.
도 6은 본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 방법의 동작 과정을 설명하는 순서도이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 레이 트레이싱 과정의 일 실시예를 설명하는 도면이다.
도 1을 참조하면, 레이 트레이싱 장치에서 수행되는 레이 트레이싱 방식은 전역 조명(global illumination)에 따른 렌더링(rendering) 방식에 해당할 수 있다. 이는 다른 물체에서 반사되거나 굴절된 빛(Light)도 현재 물체의 영상에 영향을 준다는 것을 의미할 수 있다. 이로 인하여 반사, 굴절, 그림자 효과가 자연적으로 제공되기 때문에 현실감 있는 3D 영상을 생성할 수 있다.
레이 트레이싱 장치는 먼저 각 픽셀(pixel) 당 카메라(Camera) 위치로부터 프라이머리 레이(primary ray, P)를 생성하여 해당 레이와 만나는 물체를 찾기 위한 계산을 수행할 수 있다. 레이 트레이싱 장치는 레이와 만나게 된 물체가 반사나 굴절의 성질이 있으면 레이와 물체가 만난 위치에서 반사 효과를 위한 반사 레이(reflection ray, R)나 굴절 효과를 위한 굴절 레이(refraction ray, F)를 생성할 수 있고, 또한 그림자 효과를 위하여 빛(Light) 방향으로 그림자 레이(shadow ray, S)를 생성할 수 있다.
이 때, 해당 빛(Light) 위치로 향한 그림자 레이와 어떤 물체가 만나면 그림자가 생성이 되며 그렇지 않을 경우는 그림자가 생성되지 않는다. 반사 레이와 굴절 레이는 세컨더리 레이(secondary ray)라고 불리며 레이 트레이싱 장치는 각각의 레이에 대해 해당 레이와 만나는 물체를 찾기 위한 계산을 수행할 수 있다. 이러한 과정은 레이 트레이싱 장치에 의해 반복적(recursive)으로 수행될 수 있다.
도 2는 레이 트레이싱 과정에서 사용되는 가속 구조로서 KD 트리의 일 실시예를 설명하는 도면이다.
도 2를 참조하면, 레이 트레이싱을 수행하기 위하여 전체 지오메트리 데이터(geometry data)(triangle의 좌표들로 구성)를 기초로 생성된 KD 트리(K-Dimensional Tree)나 BVH(Bounding Volume Hierarchy)와 같은 가속 구조(Acceleration Structure, AS)가 필수적으로 요구된다. 따라서, 레이 트레이싱을 수행하기 이전에 AS를 구축(build)할 필요가 있다. 이러한 가속 구조 구축(AS build)에는 연산량이 많이 필요하기 때문에 시간이 많이 소요될 수 있다.
도 2에서, kd-트리의 전체 구성도를 설명하고 있다. kd-트리는 분할한 공간에 대하여 계층적(hierarchy) 구조를 갖는 이진 트리(binary tree)에 해당할 수 있다. kd-트리는 내부 노드(inner node)(top node 포함)와 리프 노드(leaf node)로 구성될 수 있으며, 리프 노드는 해당 노드와 교차(intersection)되는 객체(object)들을 포함하고 있는 공간에 대응될 수 있다. 즉, kd-트리는 공간 분할 트리(spatial partitioning tree)로서 공간 분할 구조체(spatial partitioning structure)의 일종에 해당할 수 있다.
반면, 내부 노드는 바운딩 박스(bounding box) 기반의 공간 영역을 가질 수 있으며 해당 공간 영역은 다시 2개의 영역들로 나뉘어서 두 개의 하위 노드에 할당될 수 있다. 결과적으로 내부 노드는 분할 평면과 이를 통해 분할된 두 개의 영역의 서브-트리(sub-tree)로 구성될 수 있고, 리프 노드는 일련의 삼각형(triangle)들 만을 포함할 수 있다. 예를 들어, 리프 노드는 기하학적 데이터에 포함된 적어도 하나의 삼각형 정보를 포인팅하기 위한 삼각형 리스트를 포함할 수 있으며, 삼각형 정보는 삼각형의 세 점에 대한 정점 좌표, 법선 벡터 및/또는 텍스처 좌표를 포함할 수 있다. 만약, 기하학적 데이터에 포함된 삼각형 정보가 배열로 구현된 경우에는 리프 노드에 포함된 삼각형 리스트는 배열 인덱스에 상응할 수 있다.
한편, 공간을 분할하는 위치 p는 임의의 레이와 충돌(hit)하는 삼각형을 찾기 위한 비용(cost)(노드 방문 횟수, 삼각형과 교차되는지 계산하는 횟수 등)이 최소가 되는 지점에 해당할 수 있고, 해당 위치 p를 찾기 위해 현재 가장 많이 사용되는 방법은 SAH(Surface area heuristic)에 해당할 수 있다.
도 3은 화면 분할 방식의 멀티칩 레이 트레이싱 시스템을 설명하는 도면이다.
도 3을 참조하면, 화면 분할 방식의 멀티칩 레이 트레이싱 시스템(100)은 n개의 멀티칩(multi-chip)(ASIC or FPGA)을 활용하여 장면(scene) 렌더링을 수행할 수 있다. 화면 분할 방식의 멀티칩 레이 트레이싱 시스템(100)은 중앙처리유닛(CPU)(110), 시스템 메모리(System Memory)(120) 및 멀티칩들을 포함하여 구성될 수 있다. CPU(110)는 레이 트레이싱 어플리케이션(ray tracing application)과 장면 매니저(scene manager)를 실행하고 관리할 수 있다. 또한, CPU(110)는 시스템 메모리의 기하데이터(geometry data)와 가속 구조 데이터(AS data)를 각 멀티칩(130)들에게 전달하는 역할도 수행할 수 있다.
멀티칩(130)들은 버스 인터페이스 유닛(bus interface unit), 레이 트레이싱 유닛(RTU, Ray Tracing Unit), 전달받은 기하데이터와 가속 구조 데이터를 위한 로컬 메모리(local memory)로 구성될 수 있다. 특히, 멀티칩 중 어느 하나의 칩(chip)은 (도 3의 경우, chip #1) 화면의 영역을 나누어 분배해주는 역할을 수행할 수 있으며, kd트리(kd-tree) 생성을 위한 트리 빌드 유닛(TBU, Tree Build Unit)을 포함하여 구성될 수 있다.
화면 분할 방식의 멀티칩 레이 트레이싱 시스템(100)에서의 동작 과정은 다음과 같을 수 있다. Chip #1의 트리 빌드 유닛(TBU)은 렌더링(rendering) 될 프레임에 대한 기하데이터를 전달받아 공간 분할 구조체로서 kd트리를 구축할 수 있다.
화면 분할 방식의 멀티칩 레이 트레이싱 시스템(100) Chip #1에서의 kd트리 구축이 완료되면, kd트리 정보를 레이 트레이싱 유닛(RTU) #1 내지 #n으로 각각 전송할 수 있으며, 각 레이 트레이싱 유닛(RTU)은 이를 기초로 레이 트레이싱을 수행할 수 있다. 이때, Chip #1은 각 칩의 레이 트레이싱 유닛(RTU)이 레이 트레이싱 할 영역을 할당하는 로드 마스터(load master)의 역할을 수행할 수 있으며, 렌더링(rendering) 될 프레임을 k*k 픽셀(예를 들어, 8*8) 단위의 블록으로 프레임 영역을 나누어 각 칩에 분배할 수 있다. 각 chip의 레이 트레이싱 유닛(RTU)은 할당된 영역에 대한 레이 트레이싱을 수행할 수 있고, 생성된 색상 결과는 메모리 컨트롤러를 통해 chip #1의 프레임 버퍼에 저장될 수 있다. 최종적으로 각 칩은 프레임의 1/n에 해당하는 영역에 대한 레이 트레이싱을 수행할 수 있다.
즉, 화면 분할 방식은 프레임 1장을 다수의 레이 트레이싱 유닛들(RTU)이 영역을 나누어서 렌더링 하는 방식에 해당할 수 있다. 이때, 모든 레이 트레이싱 유닛(RTU)은 해당 프레임에 대한 kd트리 정보가 필요하므로 대규모의 데이터 전송이 발생할 수 있다. 트리 빌드 유닛(TBU)을 탑재한 칩은 해당 프레임에 대한 kd트리를 구축하여 모든 레이 트레이싱 유닛(RTU)에 전송해야 하기 때문이다.
이러한 대규모의 데이터 전송량은 시스템에서 활용하는 칩의 수가 많아질수록 증가할 수 있다. 칩의 수가 n개라면, 프레임 1장당 kd트리에 대한 데이터 전송이 n번 발생할 수 있다. 결과적으로, m개의 프레임으로 이루어진 장면(scene)에 대해서 총 n*m만큼의 데이터 전송량이 발생할 수 있다.
도 4는 본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템을 설명하는 도면이다.
도 4를 참조하면, 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 화면 분할 방식의 멀티칩 레이 트레이싱 시스템(100)과 동일하게 중앙처리유닛(CPU)(110) 및 시스템 메모리(System Memory)(120)를 포함하여 구성될 수 있다. CPU(110)는 레이 트레이싱(ray tracing) 어플리케이션 및 장면 매니저(scene manager)를 실행하고 관리하며 복수의 레이 트레이싱 코어들(230)에게 기하데이터와 가속 구조를 전달할 수 있다. 시스템 메모리(120)는 장면(scene) 생성을 위한 기하데이터(geometry data)와 가속 구조(AS, Acceleration Structure) 저장할 수 있다.
일 실시예에서, 시스템 메모리(120)는 원시 정적 장면(Primitive Static Scene)을 저장하는 PSS 영역, 동적 장면(Primitive Dynamic Scene)을 저장하는 PDS 영역 및 정적 가속 구조와 동적 가속 구조들을 각각 저장하는 AS 영역들을 포함할 수 있다.
일 실시예에서, 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 각각이 기하데이터와 가속 구조를 기초로 개별 프레임에 관한 독립된 레이 트레이싱을 수행하는 복수의 레이 트레이싱 코어들(230)을 포함할 수 있다.
일 실시예에서, 복수의 레이 트레이싱 코어들(230) 각각은 데이터 송·수신을 처리하는 버스 인터페이스 유닛(Bus Interface Unit)(231), 가속 구조(AS)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit)(232), 가속 구조(AS)를 기초로 레이 트레이싱을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit)(233) 및 레이 트레이싱을 위해 기하데이터와 가속 구조를 임시 저장하는 로컬 메모리(Local Memory)를 포함할 수 있다.
보다 구체적으로, 트리 빌드 유닛(TBU)(232)은 공간 분할 구조체(Spatial Partitioning Structure)로서 가속 구조(AS)를 구축하는 동작을 수행할 수 있다. 예를 들어, 트리 빌드 유닛(232)은 시스템 메모리(120) 상에 저장된 기하데이터를 기초로 BVH(Bounding Volume Hierarchy) 또는 KD 트리(K-Dimensional Tree) 등의 가속 구조를 생성할 수 있으며, 로컬 메모리 상에 저장할 수 있다.
보다 구체적으로, 트리 빌드 유닛(232)은 3D 게임 엔진과 같은 어플리케이션(application)의 구동에 따라 레이 트레이싱 과정에 필요한 정적 장면(static scene) 및 동적 장면(dynamic scene)에 관한 가속 구조를 생성할 수 있다. 이때, 정적 장면(static scene)의 경우 3D 어플리케이션 구동 시 1번의 트리 빌드를 통해 정적 가속 구조(static AS)가 생성될 수 있고, 동적 장면(dynamic scene)의 경우 매 프레임(frame) 마다 프리미티브 정보가 변하기 때문에 매 프레임 마다 트리 빌드가 수행되어 동적 가속 구조(dynamic AS)가 생성될 수 있다. 트리 빌드 유닛(TBU)에 의해 생성된 정적 및 동적 가속 구조들은 각각 해당 레이 트레이싱 코어의 로컬 메모리에 저장되어 이후 레이 트레이싱 과정에서 사용될 수 있다.
레이 트레이싱 유닛(RTU)(233)은 공간 분할 구조체(Spatial Partitioning Structure), 즉 가속 구조를 기초로 레이 트레이싱(Ray Tracing)을 수행할 수 있다. 보다 구체적으로, 레이 트레이싱 유닛(RTU)(233)은 트리 빌드 유닛(TBU)(232)에 의해 생성된 동적 및 정적 가속 구조들을 이용하여 레이 트레이싱을 수행할 수 있으며, 동적 및 정적 가속 구조들은 각각 로컬 메모리(local memory) 상에 저장될 수 있다.
본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 도 3의 화면 분할 방식과 달리 모든 칩들, 즉 레이 트레이싱 코어들(230) 각각이 독립된 트리 빌드 유닛(TBU)을 포함하여 구현될 수 있다. 즉, 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 하나의 칩에 해당하는 레이 트레이싱 코어에서 1장의 프레임(frame)에 대한 렌더링(rendering)을 독립적으로 수행하는 방식으로 동작할 수 있다. 따라서, 모든 칩들이 RTU 및 TBU를 탑재하기 때문에, 할당받은 프레임에 대한 kd트리 구축과 레이 트레이싱을 독립적으로 수행할 수 있으며, 화면 분할 방식과 달리 TBU가 없는 칩으로 kd트리 정보를 전송하거나 RTU의 레이 트레이싱 수행 결과 값을 특정 칩(도 3의 경우, Chip #1)의 프레임 버퍼로 전송하는 등의 추가적인 데이터 전송이 필요하지 않을 수 있다.
또한, 시스템에서 활용하는 칩의 수가 늘어나는 경우, 화면 분할 방식은 총 데이터 전송량이 증가할 수 있는 반면, 프레임 분할 방식은 총 데이터 전송량이 변함없이 기존 수준을 그대로 유지할 수 있다. 즉, 프레임 분할 방식은 시스템에 활용한 칩의 수가 n개일 때, m개의 프레임으로 이루어진 장면(scene)에 대한 총 데이터 전송량은 항상 m개로 일정하게 유지될 수 있다.
한편, 렌더링(rendering)에 있어서, 화면 분할 방식은 RTU의 수가 늘어날수록 성능이 향상되는 반면, kd트리 구축의 경우 알고리즘 상으로 병렬화가 매우 어려울 수 있으며, TBU의 수가 늘어나도 성능 향상을 달성하기 어려울 수 있다. 즉, 도 3에서, 화면 분할 방식은 다수의 칩들이 한 장의 프레임을 생성할 수 있으며, 칩의 수가 늘어날수록 RTU의 수가 증가하여 렌더링 성능은 향상되는 반면, TBU의 성능은 변화없이 그대로일 수 있다. 결과적으로, RTU와 TBU의 성능 차이가 커질 수 있고, 이는 전체 시스템의 성능 향상에 제약으로 작용할 수 있다.
반면, 도 4의 프레임 분할 방식은 다수의 칩들이 각각 프레임을 생성하는 방식에 해당할 수 있고, 각 칩은 RTU와 TBU를 포함하도록 구현될 수 있다. 즉, 칩의 수가 늘어날수록 RTU와 TBU가 증가할 수 있고, 동시에 생성 가능한 프레임의 수가 비례적으로 증가할 수 있다. 프레임 분할 방식은 시스템에 장착된 칩의 수가 많을수록 그에 비례하는 성능 향상을 기대할 수 있다.
일 실시예에서, 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 복수의 레이 트레이싱 코어들(230)로부터 수신된 프레임들을 순서에 따라 정렬하여 출력하는 프레임 유닛(240)을 더 포함하여 구현될 수 있다. 프레임 유닛(240)은 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)의 논리적인 구성에 해당할 수 있으며, 해당 동작을 수행하는 독립적인 모듈로 구현되거나 또는 다른 모듈들에서 수행되는 기능들의 논리적 집합에 해당할 수 있다. 따라서, 도 4에서는 프레임 유닛(240)을 독립적인 유닛으로 표현하고 있으나, 반드시 이에 한정되지 않고, 기능적으로 분산되어 다른 유닛들의 내부 동작 또는 다른 유닛들 간의 연계 동작으로 구체화될 수도 있음은 물론이다.
도 5는 디스플레이 순서에 따른 프레임 정렬 동작을 설명하는 도면이다.
도 5를 참조하면, 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템(200)은 프레임 유닛(240)을 통해 복수의 레이 트레이싱 코어들(230)로부터 수신된 프레임들을 순서에 따라 정렬하여 출력할 수 있다.
일 실시예에서, 프레임 유닛(240)은 복수의 레이 트레이싱 코어들(230) 각각에 할당되어 프레임들을 처리 순서에 따라 저장하는 복수의 프레임 버퍼(241)들 및 복수의 프레임 버퍼(241)들로부터 수신한 프레임들을 처리 순서와 상관없이 프레임 넘버에 따라 저장하는 프레임 큐(queue)(242)를 포함할 수 있다. 프레임 분할 방식은 동시에 많은 프레임을 생성하여 이를 화면에 디스플레이 하는 방식에 해당할 수 있다. 이때, 프레임들의 생성이 완료되는 순서가 디스플레이 순서와 반드시 일치하는 것이 아니기 때문에, 생성된 프레임들을 후처리 없이 프레임 버퍼(241)에 그대로 저장하게 되면, 디스플레이 순서가 어긋날 수 있다. 이를 방지하기 위해서는 프레임 버퍼(241)에 저장되는 프레임의 순서를 디스플레이 순서와 맞춰줄 필요가 있다. 즉, 프레임 유닛(240)은 복수의 레이 트레이싱 코어들(230) 각각이 포함하는 독립적인 프레임 버퍼(241)들과 해당 버퍼들과 연동하는 프레임 큐(242)를 논리적으로 포함하여 구현될 수 있다.
일 실시예에서, 복수의 프레임 버퍼(241)들 각각은 동일 크기로 형성되고, 프레임 큐(242)의 크기는 프레임 버퍼(241)의 개수 및 크기에 따라 결정될 수 있다. 예를 들어, 도 5의 경우, 각 칩의 프레임 버퍼(241)는 3개의 버퍼들로 구성될 수 있고, 각 칩들의 프레임 버퍼(241)와 연동하는 프레임 큐(242)의 크기는 프레임 버퍼(241)의 개수(예를 들어, 3)와 크기(예를 들어, 3)에 비례하여 9로 결정될 수 있다. 즉, 프레임 유닛(240)은 각 칩에 형성된 프레임 버퍼(241)들과 이와 연동하는 프레임 큐(242)를 통해 다양한 칩들에서 처리된 프레임들을 실제 순서에 따라 정렬할 수 있다.
일 실시예에서, 프레임 유닛(240)은 프레임 버퍼(241)에 저장된 특정 프레임에 대해 해당 프레임 넘버를 큐 인덱스에 대응시켜 특정 프레임을 프레임 큐(242)에 저장할 수 있다. 여기에서, 프레임 넘버는 디스플레이 순서와 일치할 수 있고, 초기값은 칩 넘버에 의해 결정될 수 있으며, 칩 넘버는 레이 트레이싱 코어마다 부여된 식별번호에 해당할 수 있다. 예를 들어, Chip #1은 프레임 #1을 생성할 수 있고, Chip #2는 프레임 #2를 생성할 수 있으며, Chip #3은 프레임 #3을 생성할 수 있다. 이후 각 칩이 할당받는 프레임의 프레임 넘버는 처음 할당받은 프레임의 프레임 넘버에 시스템에서 사용되는 칩들의 수를 더하여 계산될 수 있다.
또한, 각 칩에서 할당받은 프레임에 대한 생성이 끝나면 이를 프레임 버퍼(241)에 차례로 저장할 수 있다. 예를 들어, Chip #1의 프레임 버퍼 1에는 프레임 #1이 저장되게 되고, 차례로 프레임 버퍼 2에는 프레임 넘버 #(1(칩 넘버)+n(총 칩의 수))이 저장되며, 프레임 버퍼 3에서는 프레임 넘버 #(1+2n)이 저장될 수 있다.
또한, 프레임 버퍼(241)에 저장된 프레임은 프레임 큐(242)에 저장될 수 있다. 이 때, 프레임 유닛(240)은 프레임 버퍼(241)에 저장된 특정 프레임에 대해 해당 프레임 넘버를 큐 인덱스에 대응시켜 특정 프레임을 프레임 큐(242)에 저장할 수 있다. 예를 들어, Chip #1의 프레임 버퍼 #1, #2, #3에 저장된 프레임 #1, #(1+n), #(1+2n)은 각각 프레임 큐 #1, #(1+n), #(1+2n)에 저장될 수 있다.
일 실시예에서, 프레임 유닛(240)은 현재의 드로우 넘버(draw number)를 읽는 단계, 드로우 넘버와 프레임 큐(242)에 저장된 프레임들의 프레임 넘버를 각각 비교하는 단계, 드로우 넘버가 프레임 넘버와 동일하면 해당 프레임을 출력하는 단계, 출력에 성공한 경우 드로우 넘버를 1 증가시키는 단계 및 프레임 큐(242)가 공백이 될 때까지 해당 동작들을 반복하는 단계를 통해 동작할 수 있다.
즉, 프레임 유닛(240)은 프레임 큐(242)에 저장된 프레임들을 드로우(draw)를 통해 화면에 출력할 수 있다. 이때, 드로우(draw) 순서는 드로우 넘버(draw number)에 의해 결정될 수 있다. 여기에서, 드로우 넘버(draw number)는 드로우 순서를 결정하는데 사용되는 식별번호에 해당할 수 있다. 프레임 유닛(240)은 드로우 넘버가 1로 초기화된 상태에서 드로우 동작을 개시할 수 있으며, 드로우가 수행될 때마다 드로우 넘버를 1씩 증가시킬 수 있다. 결과적으로, 레이 트레이싱 시스템에 의해 수행되는 드로우 동작은 드로우 넘버와 일치하는 프레임 넘버를 가진 프레임이 프레임 큐(242)에 있으면 해당 프레임을 화면에 뿌려주고, 없으면 대기하는 동작에 해당할 수 있다. 따라서, 프레임 #1부터 차례대로 드로우가 수행될 수 있으며, 이는 디스플레이 순서와 동일하게 처리될 수 있다.
도 5에서, Chip#1, #2, #3은 각각 frame #1, #2, #3을 생성하고, 이후부터는 총 chip 수가 더해진 #4, #5, #6을 생성할 수 있다. 각 칩(레이 트레이싱 코어)은 프레임 버퍼를 3개씩 가지고 있으며, 생성된 프레임들은 프레임 버퍼에 차례로 저장될 수 있다. Chip #1의 프레임 버퍼 1, 2, 3에는 각각 프레임 #1, #4, #7이 저장되며, chip #2의 프레임 버퍼 1, 2, 3에는 프레임 #2, #5, #8이 저장되고, chip #3의 프레임 버퍼 1, 2, 3에는 프레임 #3, #6, #9가 저장될 수 있다.
각 칩의 프레임 버퍼에 저장된 프레임들은 프레임 넘버와 같은 순번의 프레임 큐(242)에 저장될 수 있다. Chip #1의 프레임 버퍼 1, 2, 3에 저장된 프레임 #1, #4, #7은 각각 프레임 큐 1, 4, 7에 저장되고, chip #2, #3의 프레임 버퍼에 저장된 프레임들도 같은 방식으로 프레임 큐(242)에 저장될 수 있다. 프레임 큐(242)에 저장된 프레임들은 드로우(draw)에 의해 차례대로 화면에 뿌려지게 되며, 드로우는 프레임 큐 1부터 드로우 넘버와 프레임 넘버를 비교해가며 차례로 수행될 수 있다. 이때, 드로우 넘버는 드로우(draw)를 수행하면 1씩 증가될 수 있다.
도 6은 본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 방법의 동작 과정을 설명하는 순서도이다.
도 6을 참조하면, 본 발명에 따른 프레임 분할 방식의 멀티칩 레이 트레이싱 방법은 다음과 같이 수행될 수 있다.
멀티칩 수 설정(MaxCardNum check) 단계(S610)에서 멀티칩(multi-chip)(ASIC or FPGA) 시스템에 사용되는 총 칩(레이 트레이싱 코어)의 수를 확인하고 드로우 넘버(draw number)를 1로 설정할 수 있다.
프레임 할당(Frame assignment) 단계(S620)는 각 칩에 렌더링(rendering) 할 프레임을 할당하는 단계에 해당할 수 있다. 활용한 칩이 #1, #2, ~#n인 경우, 프레임 #1, #2, ~#n이 각 칩에 할당될 수 있다.
기하데이터 전송(Geometry data transmission) 단계(S630)에서 각 칩은 할당받은 프레임에 대한 기하(geometry) 정보를 전송받을 수 있다. 이후 렌더링 완료(rendering done) 단계(S640)에서는 전송받은 기하(geometry) 정보를 바탕으로 렌더링(rendering)을 수행할 수 있다. 렌더링이 완료되면 결과 이미지를 프레임 버퍼(frame buffer)에 저장하는 프레임 버퍼 저장 단계(S650)와 다음에 렌더링할 프레임의 프레임 넘버를 설정하는 프레임 넘버 셋팅(frame number setting) 단계(S690)가 진행될 수 있다.
프레임 버퍼 저장(Store to frame buffer) 단계(S650)에서는 렌더링이 완료된 프레임을 해당 칩에 할당된 프레임 버퍼에 저장할 수 있다. 프레임 큐 저장(Store to frame queue) 단계(S660)는 각 칩의 프레임 버퍼에 저장된 프레임들을 프레임 큐로 저장하는 단계이며, 프레임 큐의 크기는 총 프레임 버퍼의 수와 같을 수 있다. 프레임 큐에 프레임들이 저장될 때, 프레임 넘버를 확인하여 그에 맞는 위치의 프레임 큐에 저장될 수 있다. 프레임이 저장될 프레임 큐의 위치는 프레임 넘버를 프레임 큐의 크기로 나눈 결과의 나머지 값으로 결정될 수 있다.
프레임 넘버와 드로우 넘버 비교 단계(S670)에서는 프레임 큐에 저장된 프레임의 프레임 넘버와 드로우 넘버가 같은지를 확인할 수 있다. 두 값이 같지 않으면 대기하고, 같다면 드로우 프레임(draw frame) 단계(S680)를 통해 해당 프레임을 드로우하여 디스플레이 할 수 있다. 드로우가 진행되면 드로우 넘버는 1 증가하고, 프레임 넘버와 비교하는 단계(S670)로 돌아가 저장된 프레임이 드로우 넘버와 같은지 확인할 수 있다.
프레임 넘버 셋팅(Frame number setting) 단계(S690)에서는 칩에 재할당될 프레임에 대한 프레임 넘버를 설정할 수 있다. 이는 총 칩의 수에 의해 결정되며, 최초에 받은 프레임 넘버에 총 칩의 수를 더하여 계산될 수 있다. Chip #1이 최초에 프레임 #1을 할당받고, 총 칩의 총 개수가 3이라면, 이후부터 프레임 넘버는 #4, #7, #10으로 설정될 수 있다. Chip #2가 최초에 프레임 #2를 할당받았다면, 이후부터 프레임 넘버는 #5, #8, #11로 설정될 수 있다.
프레임 넘버와 m(total frame number)의 비교 단계(S691)는 프레임 넘버 셋팅 단계(S690)에서 설정된 프레임 넘버와 장면(scene)의 총 프레임 수를 비교하는 단계에 해당할 수 있다. 설정된 프레임 넘버가 m보다 작으면, 각 칩은 해당 프레임에 대한 렌더링을 수행하며, m보다 크면 해당 장면에 대한 렌더링은 종료될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
이 발명을 지원한 국가연구개발사업
과제고유번호 : 1711103244
과제번호 : 2016-0-00204-005
부처명 : 과학기술정보통신부
과제관리(전문)기관명 : 정보통신기획평가원
연구사업명 : ICT융합산업원천기술개발(R&D)
연구과제명 : 극사실적인 실시간 가상현실을 위한 모바일 GPU 하드웨어 개발
기여율 : 1/1
과제수행기관명 : 세종대학교 산학협력단
연구기간 : 2020.01.01 ~ 2020.12.31
[부호의 설명]
100: 화면 분할 방식의 멀티칩 레이 트레이싱 시스템
110: 중앙처리유닛 120: 시스템 메모리
130: 멀티칩
200: 프레임 분할 방식의 멀티칩 레이 트레이싱 시스템
230: 레이 트레이싱 코어들 231: 버스 인터페이스 유닛
232: 트리 빌드 유닛 233: 레이 트레이싱 유닛
240: 프레임 유닛 241: 프레임 버퍼
242: 프레임 큐

Claims (13)

  1. 장면(scene) 생성을 위한 기하데이터(geometry data)와 가속 구조(AS, Acceleration Structure) 저장하는 시스템 메모리;
    각각이 상기 기하데이터와 가속 구조를 기초로 개별 프레임에 관한 독립된 레이 트레이싱을 수행하는 복수의 레이 트레이싱 코어들; 및
    레이 트레이싱(ray tracing) 어플리케이션 및 장면 매니저(scene manager)를 실행하고 관리하며 상기 복수의 레이 트레이싱 코어들에게 상기 기하데이터와 가속 구조를 전달하는 중앙 처리 유닛을 포함하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  2. 제1항에 있어서, 상기 시스템 메모리는
    원시 정적 장면(Primitive Static Scene)을 저장하는 PSS 영역, 동적 장면(Primitive Dynamic Scene)을 저장하는 PDS 영역 및 정적 가속 구조와 동적 가속 구조들을 각각 저장하는 AS 영역들을 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  3. 제1항에 있어서, 상기 복수의 레이 트레이싱 코어들 각각은
    데이터 송·수신을 처리하는 버스 인터페이스 유닛(Bus Interface Unit);
    가속 구조(AS)를 구축하는 트리 빌드 유닛(TBU, Tree Build Unit);
    상기 가속 구조(AS)를 기초로 레이 트레이싱을 수행하는 레이 트레이싱 유닛(RTU, Ray Tracing Unit); 및
    상기 레이 트레이싱을 위해 상기 기하데이터와 상기 가속 구조를 임시 저장하는 로컬 메모리(Local Memory)를 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  4. 제1항에 있어서,
    상기 복수의 레이 트레이싱 코어들로부터 수신된 프레임들을 순서에 따라 정렬하여 출력하는 프레임 유닛을 더 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  5. 제4항에 있어서, 상기 프레임 유닛은
    상기 복수의 레이 트레이싱 코어들 각각에 할당되어 상기 프레임들을 처리 순서에 따라 저장하는 복수의 프레임 버퍼들; 및
    상기 복수의 프레임 버퍼들로부터 수신한 프레임들을 상기 처리 순서와 상관없이 프레임 넘버에 따라 저장하는 프레임 큐(queue)를 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  6. 제5항에 있어서,
    상기 복수의 프레임 버퍼들 각각은 동일 크기로 형성되고,
    상기 프레임 큐의 크기는 상기 프레임 버퍼의 개수 및 크기에 따라 결정되는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  7. 제5항에 있어서, 상기 프레임 유닛은
    상기 프레임 버퍼에 저장된 특정 프레임에 대해 해당 프레임 넘버를 큐 인덱스에 대응시켜 상기 특정 프레임을 상기 프레임 큐에 저장하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  8. 제7항에 있어서, 상기 프레임 유닛은
    현재의 드로우 넘버(draw number)를 읽는 단계;
    상기 드로우 넘버와 상기 프레임 큐에 저장된 프레임들의 프레임 넘버를 각각 비교하는 단계;
    상기 드로우 넘버가 상기 프레임 넘버와 동일하면 해당 프레임을 출력하는 단계;
    상기 출력에 성공한 경우 상기 드로우 넘버를 1 증가시키는 단계; 및
    상기 프레임 큐가 공백이 될 때까지 반복하는 단계를 통해 동작하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 장치.
  9. 특정 장면(scene)을 구성하는 복수의 프레임들에 대한 레이 트레이싱을 위해 복수의 레이 트레이싱 코어들의 총 개수를 결정하는 단계;
    상기 복수의 프레임들을 프레임 단위로 분할하여 상기 복수의 레이 트레이싱 코어들 각각에 할당하는 단계;
    상기 복수의 레이 트레이싱 코어들 각각에게 시스템 메모리의 기하데이터를 전송하는 단계;
    상기 복수의 레이 트레이싱 코어들 각각에서 프레임 단위로 레이 트레이싱의 완료 여부를 결정하는 단계;
    특정 레이 트레이싱 코어에서 레이 트레이싱이 완료된 경우 해당 프레임을 해당 프레임 버퍼에 저장하는 단계;
    상기 해당 프레임을 프레임 큐(queue)에 저장하는 단계; 및
    상기 프레임 큐의 프레임들을 순차적으로 출력하는 단계를 포함하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법.
  10. 제9항에 있어서,
    상기 복수의 레이 트레이싱 코어들의 총 개수를 결정하는 단계는 드로우 넘버(draw number)를 초기화 하는 단계를 포함하고,
    상기 출력하는 단계는 상기 프레임 큐에서 현재의 드로우 넘버와 동일한 프레임 넘버의 프레임을 출력하는 단계를 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법.
  11. 제10항에 있어서, 상기 출력하는 단계는
    상기 출력에 성공한 경우 상기 현재의 드로우 넘버를 1만큼 증가시키는 단계를 포함하는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법.
  12. 제9항에 있어서,
    상기 복수의 레이 트레이싱 코어들 각각에 할당하는 단계는 할당된 프레임에 프레임 넘버를 부여하는 단계를 포함하고,
    상기 프레임 넘버는 레이 트레이싱 코어 별로 설정되고 이전의 프레임 넘버를 기준으로 상기 총 개수 만큼의 간격으로 설정되는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법.
  13. 제12항에 있어서,
    상기 프레임 넘버가 상기 복수의 프레임들의 총 개수보다 큰 경우 상기 특정 장면(scene)에 대한 렌더링(rendering)이 종료되는 것을 특징으로 하는 프레임 분할을 이용한 멀티칩(multi-chip) 기반의 레이 트레이싱 방법.
PCT/KR2020/017369 2020-10-30 2020-12-01 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법 WO2022092414A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/034,842 US20230419587A1 (en) 2020-10-30 2020-12-01 Multi-chip based ray tracing device and method using frame partitioning

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0143658 2020-10-30
KR1020200143658A KR102525084B1 (ko) 2020-10-30 2020-10-30 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법

Publications (1)

Publication Number Publication Date
WO2022092414A1 true WO2022092414A1 (ko) 2022-05-05

Family

ID=81382790

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/017369 WO2022092414A1 (ko) 2020-10-30 2020-12-01 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법

Country Status (3)

Country Link
US (1) US20230419587A1 (ko)
KR (1) KR102525084B1 (ko)
WO (1) WO2022092414A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150039493A (ko) * 2013-10-02 2015-04-10 삼성전자주식회사 레이 트레이싱 처리 장치 및 방법
KR20150114767A (ko) * 2014-04-02 2015-10-13 삼성전자주식회사 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR101807172B1 (ko) * 2016-12-28 2017-12-08 세종대학교 산학협력단 레이 트레이싱 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150039493A (ko) * 2013-10-02 2015-04-10 삼성전자주식회사 레이 트레이싱 처리 장치 및 방법
KR20150114767A (ko) * 2014-04-02 2015-10-13 삼성전자주식회사 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR101807172B1 (ko) * 2016-12-28 2017-12-08 세종대학교 산학협력단 레이 트레이싱 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LEE JINYOUNG; CHUNG WOO-NAM; LEE TAE-HYOUNG; NAH JAE-HO; KIM YOUNGSIK; PARK WOO-CHAN: "Load Balancing Algorithm for Real-Time Ray Tracing of Dynamic Scenes", IEEE ACCESS, IEEE, USA, vol. 8, 24 August 2020 (2020-08-24), USA , pages 165003 - 165009, XP011809725, DOI: 10.1109/ACCESS.2020.3019075 *
VASIOU ELENA, SHKURKO KONSTANTIN, BRUNVAND ERIK, YUKSEL CEM: "Mach-RT: A Many Chip Architecture for High Performance Ray Tracing", IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS, IEEE, USA, vol. 28, no. 3, 1 March 2022 (2022-03-01), USA, pages 1585 - 1596, XP055924848, ISSN: 1077-2626, DOI: 10.1109/TVCG.2020.3021048 *

Also Published As

Publication number Publication date
KR102525084B1 (ko) 2023-04-24
US20230419587A1 (en) 2023-12-28
KR20220058183A (ko) 2022-05-09

Similar Documents

Publication Publication Date Title
US8773449B2 (en) Rendering of stereoscopic images with multithreaded rendering software pipeline
US8102391B2 (en) Hybrid rendering of image data utilizing streaming geometry frontend interconnected to physical rendering backend through dynamic accelerated data structure generator
US9911212B2 (en) Resetting of dynamically grown accelerated data structure
US8248401B2 (en) Accelerated data structure optimization based upon view orientation
US9292965B2 (en) Accelerated data structure positioning based upon view orientation
US8330765B2 (en) Rolling context data structure for maintaining state data in a multithreaded image processing pipeline
US9633468B2 (en) Compacting results vectors between stages of graphics processing
US20100238169A1 (en) Physical Rendering With Textured Bounding Volume Primitive Mapping
US8405670B2 (en) Rolling texture context data structure for maintaining texture data in a multithreaded image processing pipeline
WO2010137821A2 (ko) 레이 트레이싱 장치 및 방법
WO2012111864A1 (ko) 레이 트레이싱 코어 및 레이 트레이싱 처리 방법
KR20140036519A (ko) 레이 추적의 스케쥴링을 위한 장치 및 방법
WO2012011644A1 (ko) 중앙 처리 장치, 그것의 gpu 시뮬레이션 방법 그리고 그것을 포함하는 컴퓨팅 시스템
US8564600B2 (en) Streaming physics collision detection in multithreaded rendering software pipeline
CN111667542B (zh) 适用于人工神经网络的用于处理压缩数据的解压缩技术
WO2015163720A1 (ko) 3차원 영상 생성 방법, 이를 수행하는 3차원 영상 생성 장치 및 이를 저장하는 기록매체
WO2016137080A1 (ko) 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법
WO2012026640A1 (ko) 밉맵 레벨 선택 방법 및 이를 이용한 텍스처 매핑 시스템
WO2022080580A1 (ko) 성능이 개선된 레이 트레이싱 장치 및 방법
CN103136399A (zh) 面向室内场景的辐射度并行绘制系统和方法
WO2016027910A1 (ko) 레이 트레이싱 방법, 이를 수행하는 레이 트레이싱 장치 및 이를 저장하는 기록매체
CN116245997A (zh) 基于超级计算机的三维模型动态渲染并行加速方法、系统
WO2009113811A2 (en) Processing 3d graphics supporting fixed pipeline
WO2022092414A1 (ko) 프레임 분할을 이용한 멀티칩 기반의 레이 트레이싱 장치 및 방법
US5724602A (en) Multiprocessor apparatus

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20960031

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 18034842

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20960031

Country of ref document: EP

Kind code of ref document: A1