KR101619875B1 - 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 - Google Patents
범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 Download PDFInfo
- Publication number
- KR101619875B1 KR101619875B1 KR1020150028005A KR20150028005A KR101619875B1 KR 101619875 B1 KR101619875 B1 KR 101619875B1 KR 1020150028005 A KR1020150028005 A KR 1020150028005A KR 20150028005 A KR20150028005 A KR 20150028005A KR 101619875 B1 KR101619875 B1 KR 101619875B1
- Authority
- KR
- South Korea
- Prior art keywords
- processing
- texture
- stretch
- brightness
- final
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/506—Illumination models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/55—Radiosity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/16—Using real world measurements to influence rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
본 발명은 3 차원 캐릭터 렌더링 시스템 및 그 처리방법에 관한 것이다. 3 차원 캐릭터 렌더링 시스템은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 3 차원 캐릭터 모델 예컨대, 사람의 얼굴과 같은 다층 구조의 피부에 대한 빛의 반사와산란에 따라 실사 피부 표현이 가능하도록 렌더링 처리한다. 이를 위해 3 차원 캐릭터 렌더링 시스템은 렌더패스에 대응하여 복수 개의 범용 그래픽 프로세싱 유닛 모듈들을 구비한다. 본 발명에 의하면, 렌더링 라이브러리의 렌더패스를 거치지 않고, 피부의 각 계층에 대한 이미지를 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 광휘 텍스쳐를 생성, 처리함으로써, 렌더링 처리를 위한 시스템의 부하를 줄일 수 있으며, 이를 통해 실시간으로 실사 피부 표현이 가능하다.
Description
본 발명은 3 차원 캐릭터 렌더링 시스템에 관한 것으로, 좀 더 구체적으로 범용 그래픽 프로세싱 유닛(General Purpose Graphic Processing Unit : GPGPU)을 이용하여 실시간으로 3 차원 캐릭터의 실사 얼굴 표현을 처리하기 위한 3 차원 캐릭터 렌더링 시스템 및 그 처리 방법에 관한 것이다.
또 본 발명은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 실시간으로 복수 개의 3 차원 캐릭터들의 실사 얼굴 표현을 병렬 처리하기 위한 3 차원 캐릭터 렌더링 시스템 및 그 처리 방법에 관한 것이다.
최근 들어 영화, 게임 및 애니메이션 등에서 재질에 대한 사실적 표현이 중요한 요소로 부각되고 있으며, 사실적 표현을 위한 다양한 기법들이 개발되고 있다. 그러나 다양한 기법들을 활용하기 위해서는 많은 시간이 소요되며, 다양한 기법들을 활용하기 위한 비용 또한 증가하게 된다.
특히, 사람의 피부와 같이 빛이 반사 및 확산되는 재질의 경우, 사진과 같은 사실적 묘사가 이루어지지 못하고 있는 실정이다. 즉, 다층으로 구성된 피부는 각 계층(layer)마다 빛을 다르게 흡수, 산란하기 때문에 컴퓨터 그래픽스에서 사람의 얼굴을 보다 사실적으로 재현하는 것은 매우 어려운 일이다.
현재 3 차원 스캔 기술의 발달에 따라 3 차원 캐릭터가 실사 얼굴과 유사한 수준의 얼굴 모델링이 가능해지고 있다. 또한 이런 인프라의 발달에 맞추어 실사 얼굴의 좀 더 사실적인 표현을 위하여, 실제 사람 얼굴에 대한 빛의 물리적 산란 효과를 적용하는 방법이 개발되고 있다. 이는 피부를 여러 계층으로 나누고, 나누어진 각 계층에 따른 빛의 반사 및 확산을 적용하는 방식을 이용한다.
예를 들어, 컴퓨터 그래픽스의 3 차원 엔진을 이용하여 사람의 피부층에 따른 광분산을 표현하기 위해서, 양방향 반사 분포 함수(Bidirectional Reflectance Distribution Function : BRDF) 방식을 이용하고 있다. 이 BRDF 방식은 스펙큘러(specular)의 표현에 주로 적용이 되고, 이후 하위의 피부층에는 확산 프로파일을 통한 확산(Diffuse) 효과를 계산한다.
도 1을 참조하면, 실제 사람 피부(10)의 계층은 오일층(oil layer)(12), 표피층(epidermis)(14) 및 진피층(dermis)(16)으로 구분한다. 피부(10)에 입사되는 입사광(20)은 광원(미도시됨)으로부터 오일층(12) 즉, 피부(10)의 표면에서 반사되어 반사광(22)을 생성하거나, 피부(10)의 내부 즉, 표피층(14)과 진피층(16)에 의해 산란된다.
실사 피부 표현을 위한 렌더링(rendering)은 피부의 각 계층에 따른 광원의 물리적 확산, 분산 효과를 3 차원 화면에 표현하는 것으로, 물리적 개념이 적용된 실사 피부를 실시간으로 표현하기 위한 기법을 의미한다. 렌더링은 2 차원의 화상에 광원, 위치, 색상 등 외부의 정보를 고려하여 사실감을 불어넣어서 3 차원의 화상을 만드는 과정을 의미한다.
오일층(12)은 피부 표면이 세밀하게 거칠기 때문에, 표피의 유분층에 의한 반사는 거울과 같은 반사가 아니다. 오일층(12)은 하나의 입사각과 반사각을 가지게 되고, 이것을 표현하기 위하여, 양방향 반사 분포 함수(BRDF) 방식을 사용한다. 이것은 렌더링의 마지막 렌더패스(renderpass)에서 스펙큘러(specular) 형태로 쉐이더(shader) 함수에서 적용된다.
표피층(14)과 진피층(16)에서의 빛의 산란 효과를 처리하기 위하여, 여러 장의 광휘 텍스쳐를 생성하여 확산 프로파일(diffusion profile)이라는 물리적 산란을 표현하기 위한 기법을 적용한다. 확산 프로파일은 반투명의 산란도가 높은 표면 아래에서 빛이 확산되는 경우, 빛의 산란을 추정하는 방법이다. 일 예로 확산 프로파일은 빛의 중심에서의 거리와 각도에 대한 함수로, 얼마나 많은 빛이 나오는지 알려준다. 이러한 확산 프로파일은 색상에 매우 의존적이다. 예컨대, 빨간색은 녹색과 파란색 보다 휠씬 멀리 산란된다. 학자들은 피부에 이론적으로 150 색상 영역을 시뮬레이트하는 스펙트럼 모델을 구현하였다. 그러나 이는 현실적으로 많은 렌더패스(renderpass)를 거치게 되므로, 현실적이지 못하여 일반적으로 RGB 광확산(light diffusion)을 통하여 렌더링한다.
이러한 확산 프로파일은 알고리즘의 특성상, 광휘 텍스쳐(irradiance texture)를 순차적으로 생성해야 하며, 최종 렌더링 단계에서 가우시안 필터(gaussian filter)를 적용하여 광휘 텍스쳐를 합성하는 형식으로 피부를 실사 표현한다. 즉, 피부 계층을 구분하여 각 물리적 확산 프로파일을 적용하는 방식에서는 표현하고자 하는 광휘 텍스쳐를 여러 장 생성하고, 이 것을 가우시안 필터를 적용하고, 선형 결합하는 방식을 사용하고 있다. 이 과정에서 광휘 관련 텍스쳐를 순차, 선형적으로 생성하여야 한다. 이로 인하여, 광휘 텍스쳐 생성 및 변경에 많은 시간이 투자되어 빠른 렌더링에 한계점을 가지게 되므로, 병렬 프로세스로 생성하기에는 한계가 있다. 또한 이러한 복잡한 처리 과정 중, 특히 여러 장의 광휘 텍스쳐를 생성 및 정보를 채우는 과정에서 부하가 발생된다.
그러므로 BRDF 방식을 이용하여 실시간으로 3 차원 캐릭터에 대한 실사 피부 표현이 거의 불가능하다.
또 3 차원 캐릭터의 실사 피부 표현에 따라 발생되는 부하를 줄이기 위하여, 현재에는 LOD(Level Of Detail) 기법을 사용하거나, 광휘 처리 단계를 줄이는 방법을 사용한다. 그러나 이러한 방법 또한 표현되는 3 차원 캐릭터가 실사 피부라기 보다는 유사 피부적으로 표현되고 있는 실정이다. 또한 하나의 컨텐츠에서 복수 개의 얼굴 캐릭터를 실사 표현하고자 할 경우에, 처리 속도 상의 문제가 발생되어 부하 문제가 더욱 부각되고 있다.
본 발명의 목적은 3 차원 캐릭터의 극사실적인 표현을 위해 범용 그래픽 프로세싱 유닛을 이용하여 3 차원 캐릭터의 실사 피부 표현을 처리하는 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법을 제공하는 것이다.
본 발명의 다른 목적은 범용 그래픽 프로세싱 유닛을 이용하여 실시간으로 복수 개의 3 차원 캐릭터들의 실사 피부 표현을 병렬 처리하기 위한 3 차원 캐릭터 렌더링 시스템 및 그 처리 방법을 제공하는 것이다.
상기 목적들을 달성하기 위한, 본 발명의 3 차원 캐릭터 렌더링 시스템은 3 차원 캐릭터의 얼굴 피부의 각 계층에 대한 이미지를 범용 그래픽 프로세싱 유닛을 이용하여 렌더링 처리하는데 그 한 특징이 있다. 이와 같은 본 발명의 3 차원 캐릭터 렌더링 시스템은 범용 그래픽 프로세싱 유닛을 이용하여 렌더링 처리함으로써, 3 차원 캐릭터를 실시간으로 실사 피부 표현이 가능하고, 컨텐츠에 포함되는 복수 개의 3 차원 캐릭터들에 대한 실사 피부 표현의 병렬 처리가 가능하다.
이 특징에 따른 본 발명의 3 차원 캐릭터 렌더링 시스템은, 3 차원 캐릭터 모델의 피부 계층에 따른 단계별로 광휘 텍스쳐를 생성하여 순차적으로 블러 처리하는 복수 개의 광휘 처리 모듈들과; 화면 좌표와 이미지 좌표를 맵핑하여 스트레치 처리된 이미지 데이터를 생성하고, 전처리로 스트레치 새도맵을 생성하여 상기 광휘 처리 모듈들 각각에서 광휘 텍스쳐를 블러 처리하도록 전처리하는 스트레치 처리 모듈 및; 블러 처리된 광휘 텍스쳐들을 상기 광휘 처리 모듈들로부터 받아서 선형 결합하고, 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여 최종 텍스쳐를 생성, 출력하는 최종 처리 모듈을 포함하되; 상기 광휘 처리 모듈, 상기 스트레치 처리 모듈 및 상기 최종 처리 모듈 각각은 범용 그래픽 프로세싱 유닛 모듈로 구비된다.
이 특징의 한 실시예에 있어서, 상기 광휘 처리 모듈은; 3 차원 캐릭터에 대한 광휘 텍스쳐를 생성, 저장하는 광휘 텍스쳐부와; 이미지 좌표를 생성된 광휘 텍스쳐 좌표로 맵핑하는 이미지 좌표 맵퍼부 및; 맵핑된 광휘 텍스쳐를 가우시안 커널(gaussian Kernel)을 사용하여 블러(blur) 처리하는 광휘 처리 함수부를 포함한다.
다른 실시예에 있어서, 상기 스트레치 처리 모듈은; 각각의 텍스쳐를 U 축 또는 V 축 방향으로 스트레치 처리하는 스트레치 처리 함수부와; 화면 좌표와 스트레치 U 이미지 데이터와 스트레치 V 이미지 데이터의 이미지 좌표를 맵핑하는 좌표 맵퍼부 및; 범용 그래픽 프로세싱 유닛 모듈의 리소스(resource)인 스트레치 U 새도맵과 스트레치 V 새도맵을 생성하는 스트레치 새도맵 함수부를 포함한다.
또 다른 실시예에 있어서, 상기 최종 처리 모듈은; 상기 광휘 처리 모듈들로부터 블러 처리된 광휘 텍스쳐들을 받아서 선형 결합하는 선형 결합부와; 상기 선형 결합부로부터 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여, 최종 백 텍스처를 생성하고, 최종 백 텍스처로부터 최종 텍스쳐를 생성하여 출력하는 최종 처리 함수부를 포함한다.
본 발명의 다른 특징에 따르면, 3 차원 캐릭터 렌더링 시스템의 처리 방법이 제공된다.
이 특징에 따른 3 차원 캐릭터 렌더링 시스템의 처리 방법은, 범용 그래픽 프로세싱 유닛 모듈을 이용하여 3 차원 캐릭터의 피부 계층에 따른 단계별 이미지로부터 텍스쳐를 스트레치 처리하는 전처리 단계와; 범용 그래픽 프로세싱 유닛 모듈을 이용하여 단계별 이미지로부터 광휘 텍스쳐를 생성, 처리하는 광휘 처리 단계 및; 범용 그래픽 프로세싱 유닛 모듈을 이용하여 광휘 텍스쳐로부터 실사 피부가 표현된 최종 텍스쳐를 생성하여 실시간으로 출력하도록 처리하는 최종 처리 단계를 포함한다.
이 특징의 한 실시예에 있어서, 상기 전처리 단계는; 3 차원 캐릭터의 얼굴 이미지 텍스쳐를 범용 그래픽 프로세싱 유닛 모듈의 스트레치 버퍼에 렌더링하고; 이어서 범용 그래픽 프로세싱 유닛 모듈의 스트레치 버퍼 및 임시 버퍼를 이용하여 스트레치 U 처리 함수 및 스트레치 V 처리 함수를 복수 회 반복 처리하여, U 축 및 V 축 방향으로 스트레치된 텍스쳐를 출력한다.
다른 실시예에 있어서, 상기 광휘 처리 단계는; 3 차원 캐릭터의 얼굴 이미지 텍스쳐를 범용 그래픽 프로세싱 유닛 모듈의 화면 버퍼에 렌더링하고; 이어서 범용 그래픽 프로세싱 유닛 모듈의 임시 버퍼와 스트레치 버퍼 및 광휘 버퍼를 이용하여 광휘 처리 함수 및 스트레치 새도맵 처리 함수를 복수 회 반복 처리하여 단계별로 광휘 이미지를 생성, 처리한다.
또 다른 실시예에 있어서, 상기 최종 처리 단계는; 상기 광휘 처리 단계에서 처리된 단계별 광휘 이미지를 스트레치 버퍼로부터 받아서 선형 결합하고; 가우시안 블러를 적용하여 블러 합성 함수를 처리하여 최종 백 텍스쳐를 생성하고; 최종 백 텍스쳐를 스펙큘러 함수를 이용하여 빛의 좌표, 3 차원 맵핑시켜서 스펙큘러를 계산하고; 이어서 스펙큘러, 이미지 좌표계로 맵핑하여 실사 피부가 표현된 최종 텍스쳐를 생성하여 출력한다.
본 발명의 또 다른 특징에 따르면, 복수 개의 3 차원 캐릭터를 위한 렌더링을 병렬 처리하는 3 차원 캐릭터 렌더링 시스템이 제공된다.
이 특징에 따른 본 발명의 복수 개의 3 차원 캐릭터를 위한 렌더링을 병렬 처리하는 3 차원 캐릭터 렌더링 시스템은, 컨텐츠에 포함된 복수 개의 3 차원 캐릭터들 각각의 피부에 대한 이미지를 범용 그래픽 프로세싱 유닛을 이용하여 렌더링 처리하고, 자신의 스레드 풀(thread pool)을 인식하기 위한 스레드 인식자를 갖고, 스레드 풀을 처리하는 복수 개의 실사 피부 처리 모듈 및; 상기 실사 피부 처리 모듈로부터 상기 스레드 인식자를 인식하여 상기 실사 피부 처리 모듈들에 대한 스레드 풀을 관리하는 스레드 풀 모니터를 포함하여, 복수 개의 3 차원 캐릭터들 각각의 렌더링을 병렬 처리한다.
이 특징의 한 실시예에 있어서, 상기 실사 피부 처리 모듈은; 3 차원 캐릭터 모델의 피부 계층에 따른 단계별로 광휘 텍스쳐를 생성하여 순차적으로 블러 처리하는 복수 개의 광휘 처리 모듈들과; 화면 좌표와 이미지 좌표를 맵핑하여 스트레치 처리된 이미지 데이터를 생성하고, 전처리로 스트레치 새도맵을 생성하여 상기 광휘 처리 모듈들 각각에서 광휘 텍스쳐를 블러 처리하도록 전처리하는 스트레치 처리 모듈 및; 블러 처리된 광휘 텍스쳐들을 상기 광휘 처리 모듈들로부터 받아서 선형 결합하고, 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여 최종 텍스쳐를 생성, 출력하는 최종 처리 모듈을 더 포함한다.
다른 실시예에 있어서, 상기 스레드 풀 모니터는; 상기 실사 피부 처리 모듈들 각각이 처리하는 각 캐릭터 마다의 범용 그래픽 프로세싱 유닛 함수로부터의 반응을 감지하여, 더 이상 실사 피부에 대한 상기 실사 피부 처리 모듈이 할당될 수 없는 한계치를 판단하여 해당 실사 피부 처리 모듈이 동작할 수 없다고 판단되면, 어플리케이션으로 알려준다.
본 발명의 또 다른 특징에 따르면, 복수 개의 3 차원 캐릭터를 위한 렌더링을 병렬 처리하는 3 차원 캐릭터 렌더링 시스템의 처리 방법이 제공된다.
이 특징에 따른 본 발명의 3 차원 캐릭터 렌더링 시스템의 처리 방법은, 상기 3 차원 캐릭터 렌더링 시스템의 스레스 풀 모니터를 활성화시켜서 복수 개의 실사 피부 처리 모듈들 각각에 대한 스레드 풀을 생성하는 단계와; 상기 실사 피부 처리 모듈들 각각에 대한 스레드 인식자를 배정하는 단계와; 상기 실사 피부 처리 모듈들의 리소스를 초기화하는 단계와; 상기 스레스 풀 모니터로부터 상기 실사 피부 처리 모듈들의 스레드에 출력 시작을 알리는 단계와; 상기 스레스 풀 모니터로 상기 실사 피부 처리 모듈들 각각에 대한 스레드 풀 신호를 감시하는 단계와; 상기 스레스 풀 모니터가 상기 실사 피부 처리 모듈들 각각의 최종 텍스쳐에 대한 갱신 상태를 인지하는 단계와; 상기 스레스 풀 모니터가 상기 실사 피부 처리 모듈의 정상 동작 상태를 판별하기 위해 상기 실사 피부 처리 모듈들 각각으로부터 스레드 신호의 유무를 판별하는 단계 및; 판별 결과, 스레드 신호가 있으면, 최종 컨텐츠의 렌더패스를 처리하여 출력하는 단계를 포함한다.
이 특징의 한 실시예에 있어서, 상기 방법은; 판별 결과, 스레드 신호가 없으면, 어플리케이션으로 오류가 발생되었음을 알려주는 단계를 더 포함한다.
상술한 바와 같이, 본 발명의 3 차원 캐릭터 렌더링 시스템은 3 차원 캐릭터의 실사 피부를 표현하기 위하여, 광휘 텍스쳐를 DirectX 나 OpenGL 등과 같은 렌더링 라이브러리의 렌더패스를 거치지 않고, 피부의 각 계층에 대한 분산 이미지를 CUDA(Computer Unified Device Architecture)와 같은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 광휘 텍스쳐를 생성, 처리함으로써, 렌더링 처리를 위한 시스템의 부하를 줄일 수 있으며, 이를 통해 실시간으로 실사 피부 표현이 가능하다.
또 본 발명의 3 차원 캐릭터 렌더링 시스템은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여, 렌더패스를 줄이고, 쉐이더 함수 보다는 GPGPU 함수를 사용함으로써, 다양한 캐릭터 중심의 컨텐츠에서 좀 더 빠르게 실시간으로 캐릭터의 실사 표현 처리가 가능하도록 처리할 수 있다.
또한 본 발명의 3 차원 캐릭터 렌더링 시스템은 컨텐츠에 포함된 복수 개의 캐릭터들에 대한 실사 피부 표현을 병렬 처리함으로써, 다수의 캐릭터들에 대한 실사 피부 표현을 좀 더 빠르게 하여 폭 넓은 컨텐츠에 활용 가능하고, 캐릭터 관련 산업의 발전에 큰 영향을 미칠 수 있다.
도 1은 실제 사람의 피부 계층에 따른 빛의 반사 및 확산 상태를 나타내는 도면;
도 2는 본 발명에 따른 3 차원 캐릭터의 실사 피부 표현을 위해 렌더링 처리하는 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도;
도 3은 본 발명에 따른 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도;
도 4는 도 3에 도시된 전처리 처리 루틴의 처리 수순을 나타내는 흐름도;
도 5는 도 3에 도시된 광휘 처리 루틴의 처리 수순을 나타내는 흐름도;
도 6은 도 3에 도시된 최종 처리 루틴의 처리 수순을 나타내는 흐름도;
도 7은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도; 그리고
도 8은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도이다.
도 2는 본 발명에 따른 3 차원 캐릭터의 실사 피부 표현을 위해 렌더링 처리하는 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도;
도 3은 본 발명에 따른 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도;
도 4는 도 3에 도시된 전처리 처리 루틴의 처리 수순을 나타내는 흐름도;
도 5는 도 3에 도시된 광휘 처리 루틴의 처리 수순을 나타내는 흐름도;
도 6은 도 3에 도시된 최종 처리 루틴의 처리 수순을 나타내는 흐름도;
도 7은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도; 그리고
도 8은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도이다.
본 발명의 실시예는 여러 가지 형태로 변형될 수 있으며, 본 발명의 범위가 아래에서 서술하는 실시예로 인해 한정되어지는 것으로 해석되어서는 안된다. 본 실시예는 당업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서 도면에서의 구성 요소의 형상 등은 보다 명확한 설명을 강조하기 위해서 과장되어진 것이다.
이하 첨부된 도 2 내지 도 8을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 2는 본 발명에 따른 3 차원 캐릭터의 실사 피부 표현을 위해 렌더링 처리하는 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도이다.
도 2를 참조하면, 본 발병의 3 차원 캐릭터 렌더링 시스템(100)은 3 차원 캐릭터를 실시간으로 실사 피부 표현하기 위하여, 3 차원 캐릭터의 얼굴 피부에 대한 이미지를 범용 그래픽 프로세싱 유닛(General Purpose Graphic Processing Unit : GPGPU)을 이용하여 렌더링 처리한다.
따라서 본 발명의 3 차원 캐릭터 렌더링 시스템(100)은 3 차원 캐릭터의 실사 피부를 표현하기 위하여, 광휘 텍스쳐를 DirectX 나 OpenGL 등과 같은 렌더링 라이브러리의 렌더패스를 거치지 않고, 피부의 각 계층에 대한 분산 이미지를 CUDA(Computer Unified Device Architecture)와 같은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 광휘 텍스쳐를 생성, 처리한다.
이를 위하여 본 발명에서는 광휘 텍스쳐가 범용 그래픽 프로세싱 유닛(GPGPU)과 연동되어야 하며, 광휘 텍스쳐의 이미지 처리를 위한 범용 그래픽 프로세싱 유닛(GPGPU) 함수가 필요하게 된다. 즉, 렌더패스에서의 쉐이더(shader)의 기능을 범용 그래픽 프로세싱 유닛(GPGPU) 함수가 대처하게 되는 처리 구조를 갖는다. 이 때, 쉐이더(Shader) 기능은 범용 그래픽 프로세싱 유닛(GPGPU) 함수가 대처함으로써, 렌더링과 관련된 처리 과정을 빠르고 정밀하게 표현하도록 하는 효과가 있다.
또한 본 발명은 광휘 처리를 위한 텍스쳐와 같은 텍스쳐 리소스를 범용 그래픽 프로세싱 유닛(GPGPU)과 연동되도록 생성함으로써, 좀 더 빠르게 실시간 처리를 위한 구조를 적용한다. 이와 같이 렌더패스를 거치지 않고, 범용 그래픽 프로세싱 유닛(GPGPU)에서 광휘 처리가 가능하도록 함으로써, 게임, 애니메이션 및 기타 다양한 컨텐츠에 적용함에 있어서 개선된 렌더링 속도를 제공하게 된다.
구체적으로, 본 발병의 3 차원 캐릭터 렌더링 시스템(100)은 복수 개의 광휘 처리 모듈(110)과, 스트레치 처리 모듈(120) 및, 최종(final) 처리 모듈(130)을 포함한다. 복수 개의 광휘 처리 모듈(110)과, 스트레치 처리 모듈(120) 및, 최종 처리 모듈(130)들 각각은 광휘 텍스쳐를 연동 처리하는 범용 그래픽 프로세싱 유닛(GPGPU) 모듈로 구비된다.
광휘 처리 모듈(irradiance GPU module)(110)은 3 차원 캐릭터에 대한 광휘 텍스쳐를 생성, 저장하는 광휘 텍스쳐부(116)와, 이미지 좌표를 생성된 광휘 텍스쳐 좌표로 맵핑하는 이미지 좌표 맵퍼부(112) 및, 맵핑된 광휘 텍스쳐를 블러(blur) 처리하는 광휘 처리 함수부(114)를 포함한다. 광휘 처리 함수부(114)는 U 축 방향 블러를 처리하는 가우시안 커널(gaussian Kernel) U 블러 함수와, V 축 방향 블러를 처리하는 가우시안 커널 V 블러 함수를 구비한다.
여기서 광휘 텍스쳐는 3 차원 캐릭터를 구성하는 각 폴리곤(polygon)에 해당하는 광휘 텍스쳐를 최적의 스트레치 이미지로부터 획득하여 생성하고, 생성된 광휘 텍스쳐를 광휘 텍스쳐부(116)에 저장한다. 이 때, 이미지 좌표 맵퍼부(112)는 이미지 좌표를 광휘 텍스쳐 좌표로 매핑 처리하면, 일부에 블러(blur)가 발생된다. 그러므로 광휘 처리 함수부(114)는 각각의 함수를 통해 맵핑된 광휘 텍스쳐를 블러 처리한다. 블러 처리된 광휘 텍스쳐는 광휘 텍스쳐부(116)에 저장되어, 가우시안 커널을 이용하여 최종적으로 광휘를 조절한다.
이러한 광휘 처리 모듈(110)은 3 차원 캐릭터의 텍스쳐 획득 및 매핑을 텍스쳐 맵의 생성 과정없이 그래픽 프로세싱 유닛(GPU) 기반으로 처리한다. 따라서 복수 개의 광휘 처리 모듈(110)들은 상술한 과정들을 순차적으로 처리하여 각 광휘 텍스쳐를 처리한다. 이 때, 각 광휘 처리 모듈(110)로부터 출력되는 광휘 텍스쳐를 전처리 모듈 즉, 스트레치 처리 모듈(120)에서 블러 처리되도록 한다.
광휘 처리 모듈(110)은 스트레치 U 새도맵을 기준으로 하여 가우시안 커널을위한 U 축 방향의 블러를 처리하고, 스트레치 V 새도맵을 기준으로 하여 가우시안 커널을위한 V 축 방향의 블러를 처리한다. 따라서 광휘 처리 모듈(110)은 범용 그래픽 프로세싱 유닛(GPGPU) 모듈에 연동된 텍스쳐 데이터에 단계별 광휘 이미지 데이터를 생성한다.
스트레치 처리 모듈(stretch GPU module)(120)은 전처리 모듈로서, U 축 및 V 축 방향으로 스트레치 처리된 스트레치 U 이미지 데이터와 스트레치 V 이미지 데이터를 생성하고, 전처리로 스트레치 U 새도맵과 스트레치 U 새도맵을 생성한다. 스트레치 U 이미지 데이터와 스트레치 V 이미지 데이터는 스트레치 처리 모듈(120)이 화면 좌표와 이미지 좌표를 맵핑하여 생성된다. 또 스트레치 처리 모듈(120)은 범용 그래픽 프로세싱 유닛(GPGPU) 모듈에 연동된 스트레치 U 텍스쳐와 스트레치 V 텍스쳐 데이터에 대해 작업을 처리한다.
이 실시예에서 스트레치 처리 모듈(120)은 U 축 방향으로 스트레치 처리하는 스트레치 U 처리 모듈(stretch U GPU module)과, V 축 방향으로 스트레치 처리하는 스트레치 V 처리 모듈(stretch V GPU module)으로 구비된다.
각 스트레치 처리 모듈(120)은 스트레치 처리 함수부(122)와, 좌표 맵퍼부(124) 및, 스트레치 새도맵 함수부(126)를 포함한다. 각 스트레치 처리 모듈(120)의 스트레치 처리 함수부(122)에는 스트레치 U 함수부 또는 스트레치 V 함수부를 구비한다.
스트레치 처리 함수부(122)는 각각의 텍스쳐를 U 축 또는 V 축 방향으로 스트레치 처리한다. 좌표 맵퍼(mapper)부(124)는 화면 좌표와 스트레치 U 이미지 데이터와 스트레치 V 이미지 데이터의 이미지 좌표를 맵핑한다.
그리고 스트레치 새도맵(shadow map) 함수부(126)는 범용 그래픽 프로세싱 유닛(GPGPU)의 리소스(resource)인 스트레치 U 새도맵과 스트레치 V 새도맵을 생성한다. 각 스트레치 새도맵(shadow map) 함수부(126)에는 스트레치 U 새도맵 함수부 또는 스트레치 V 새도맵 함수부를 구비한다. 스트레치 U 새도맵 함수부와 스트레치 V 새도맵 함수부 각각은 텍스쳐 맵핑으로부터 3 차원 공간에 맵핑시키는 과정에서의 왜곡을 처리하기 위하여, 스트레치 U 새도맵과 스트레치 V 새도맵을 각각 분리한다.
또 스트레치 처리 모듈(120)은 도면에는 도시되지 않았으나, 임시 버퍼와 스트레치 버퍼를 구비한다. 임시 U 블러 버퍼는 범용 그래픽 프로세싱 유닛(GPGPU)에 할당되어, U 스트레치를 위해 블러 커널에 대한 임시 텍스쳐 버퍼로 사용되고, V 블러 버퍼는 범용 그래픽 프로세싱 유닛(GPGPU)에 할당되어, V 스트레치를 위해 블러 커널에 대한 텍스쳐 버퍼, 최종 패스의 가우시안 블러에 사용된다.
따라서 스트레치 처리 모듈(120)은 광휘 처리 모듈(110) 각각에서 처리된 광휘 텍스쳐를 블러(blur) 처리하도록 전처리한다.
그리고 최종 처리 모듈(final GPU module)(130)은 선형 결합부(132)와, 최종 처리 함수부(140)를 포함한다. 최종 처리 함수부(140)는 블러 합성 함수를 처리하는 블러 합성 함수부와(142), 스펙큘러 함수를 처리하는 스펙큘러 함수부(144), 백 텍스쳐를 복사하는 백 텍스쳐 복사부(146)와, 최종 백 텍스쳐를 생성하는 최종 백 텍스처부(148) 및, 최종 텍스쳐를 생성하여 화면에 출력하는 최종 텍스쳐부(149)를 포함한다.
최종 처리 모듈(130)은 블러 처리된 광휘 텍스쳐들을 광휘 처리 모듈(110)들로부터 받아서 선형 결합부(132)를 통해 선형 결합한다. 최종 처리 함수부(140)는 선형 결합부(132)에서 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여, 최종 백 텍스처를 생성하고, 이를 최종 텍스쳐로 생성하여 출력한다.
이러한 최종 처리 모듈(130)은 범용 그래픽 프로세싱 유닛(GPGPU) 함수로 각 단계에 광휘 이미지 데이터에 대한 가우시안 블러를 적용하여 확산 프로파일 효과를 나타나게 한다. 또 최종 처리 모듈(130)은 BRDF 스펙큘러에 대한 효과도 최종 결과 이미지에 맵핑시킨다. 또 최종 처리 모듈(130)은 범용 그래픽 프로세싱 유닛(GPGPU)에 연동된 최종 텍스쳐 데이터에 대하여 작업을 처리한다. 따라서 최종 처리 모듈(130)은 최종 마지막 실사 피부 표현된 범용 그래픽 프로세싱 유닛(GPGPU) 상의 텍스쳐를 생성하여 화면에 출력한다.
상술한 바와 같이, 본 발명의 3 차원 캐릭터 렌더링 시스템(100)은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 랜더패스 과정을 최소화하고, 광휘 처리, 스트레치 처리 및 최종 처리하여, 실시간으로 실사 피부 표현을 처리할 수 있다.
도 3은 본 발명에 따른 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도이고, 도 4는 도 3에 도시된 전처리 처리 루틴의 처리 수순을 나타내는 흐름도이고, 도 5는 도 3에 도시된 광휘 처리 루틴의 처리 수순을 나타내는 흐름도이며, 도 6은 도 3에 도시된 최종 처리 루틴의 처리 수순을 나타내는 흐름도이다. 이 수순들은 3 차원 캐릭터 렌더링 시스템(100)이 처리하는 프로그램으로, 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 처리한다.
먼저 도 3을 참조하면, 본 발명의 3 차원 캐릭터 렌더링 시스템(100)은 3 차원 캐릭터의 실사 피부 렌더링을 위하여, 단계 S200에서 범용 그래픽 프로세싱 유닛(GPGPU) 모듈을 이용하여 전처리 과정으로 텍스쳐를 스트레치를 처리하고, 단계 S230에서 범용 그래픽 프로세싱 유닛(GPGPU) 모듈을 이용하여 광휘 텍스쳐를 생성, 처리하며, 이어서 단계 S250에서 범용 그래픽 프로세싱 유닛(GPGPU) 모듈을 이용하여 최종 텍스쳐를 처리한다.
구체적으로, 스트레치 처리 루틴(S200)은 도 4에 도시된 바와 같이, 단계 S202에서 얼굴 3 차원 모델의 텍스쳐를 범용 그래픽 프로세싱 유닛(GPGPU) 모듈 즉, 스트레치 처리 모듈(120)의 제 1 스트레치 버퍼(StretchBuffer0)에 렌더링하고, 이어서 단계 S204 내지 단계 S218에서 스트레치 U 처리 함수 및 스트레치 V 처리 함수(S1)를 복수 회 반복 처리한다. 이 때, 제 1 스트레치 버퍼(StretchBuffer0)에 렌더링하는 것은 3 차원 좌표를 2 차원 좌표로 렌더링함을 의미한다.
즉, 단계 S204에서 제 1 스트레치 버퍼(StretchBuffer0)를 소스로 사용하여 스트레치 U 새도맵 함수를 처리하여 임시 버퍼(임시Buffer)에 결과를 출력한다. 단계 S206에서 임시 버퍼(임시Buffer)를 소스로 사용하여 U 축 방향으로 스트레치된 텍스쳐를 스트레치 V 새도맵 함수를 처리하여 V 축 방향으로 스트레치된 텍스쳐를 제 2 스트레치 버퍼(StretchBuffer1)에 출력한다.
단계 S208에서 제 2 스트레치 버퍼(StretchBuffer1)로부터 스트레치 U 새도맵 함수를 처리하여 임시 버퍼(임시Buffer)에 결과를 출력한다. 단계 S210에서 임시 버퍼(임시Buffer)를 소스로 사용하여 U 축 방향으로 스트레치된 텍스쳐를 스트레치 V 새도맵 함수를 처리하여 V 축 방향으로 스트레치된 텍스쳐를 제 3 스트레치 버퍼(StretchBuffer2)에 출력한다.
단계 S212에서 제 3 스트레치 버퍼(StretchBuffer2)로부터 스트레치 U 새도맵 함수를 처리하여 임시 버퍼(임시Buffer)에 결과를 출력한다. 단계 S214에서 임시 버퍼(임시Buffer)를 소스로 사용하여 U 축 방향으로 스트레치된 텍스쳐를 스트레치 V 새도맵 함수를 처리하여 V 축 방향으로 스트레치된 텍스쳐를 제 4 스트레치 버퍼(StretchBuffer3)에 출력한다.
단계 S216에서 제 4 스트레치 버퍼(StretchBuffer3)로부터 스트레치 U 새도맵 함수를 처리하여 임시 버퍼(임시Buffer)에 결과를 출력하고, 이어서 단계 S218에서 임시 버퍼(임시Buffer)를 소스로 사용하여 U 축 방향으로 스트레치된 텍스쳐를 스트레치 V 새도맵 함수를 처리하여 V 축 방향으로 스트레치된 텍스쳐를 제 5 스트레치 버퍼(StretchBuffer4)에 출력하여 스트레치 처리 함수를 전처리한다.
따라서 이 실시예에서의 스트레치 처리 루틴(S200)은 기존 방식에서 스트레치 전처리를 위해 9 회의 렌더패스(renderpass)를 처리하던 부분을 1 회의 렌더패스(S202)와 4 회의 범용 그래픽 프로세싱 유닛(GPGPU) 함수 즉, 스트레치 처리 함수(S204 ~ S218)를 통하여 이미지 처리함으로써, 부하를 줄일 수 있다.
또 광휘 처리 루틴(S230)은 도 5에 도시된 바와 같이, 단계 S232에서 얼굴 3 차원 모델의 텍스쳐를 범용 그래픽 프로세싱 유닛(GPGPU) 모듈 즉, 광휘 처리 모듈(110)의 화면 버퍼에 렌더링하고, 이어서 단계 S234 내지 단계 S244에서 광휘 처리 함수 및 스트레치 처리 함수(S2)를 복수 회 반복 처리한다.
구체적으로 단계 S234에서 화면 버퍼와 제 1 스트레치 버퍼(StretchBuffer0)를 소스로 사용하여 스트레치 U 새도맵 함수를 처리하여 임시 버퍼에 결과를 출력한다. 단계 S236에서 임시 버퍼와 제 1 스트레치 버퍼(StretchBuffer0)를 소스로 사용하여 스트레치 V 새도맵 함수를 처리하여 제 1 광휘 버퍼(광휘 버퍼0)에 출력한다. 이 후 단계 S234 및 단계 S236 과정을 복수 회 반복 처리한다. 이 실시예에서는 단계 S234 및 단계 S236 과정을 5 회 반복 처리한다.
즉, 단계 S238에서 제 1 광휘 버퍼(광휘 버퍼0)와 제 2 스트레치 버퍼(StretchBuffer1)를 소스로 사용하여 스트레치 U 새도맵 함수를 처리하여 임시 버퍼에 결과를 출력한다. 단계 S240에서 임시 버퍼와 제 2 스트레치 버퍼(StretchBuffer1)를 소스로 사용하여 스트레치 V 새도맵 함수를 처리하여 제 2 광휘 버퍼(광휘 버퍼1)에 결과를 출력한다.
이 후, 도면에는 도시되지 않았지만, 제 2 내지 제 3 광휘 버퍼, 제 3 내지 제 4 스트레치 버퍼를 순차적으로 소스로 사용하여 스트레치 U 새도맵 함수 및 스트레치 V 새도맵 함수를 각각 처리하여 임시 버퍼에 결과를 출력하고, 이를 통해 제 3 또는 제 4 광휘 버퍼에 결과를 출력한다.
그리고 단계 S242에서 제 4 광휘 버퍼(광휘 버퍼3)와 제 5 스트레치 버퍼(StretchBuffer4)를 소스로 사용하여 스트레치 U 새도맵 함수를 처리하여 임시 버퍼에 결과를 출력한다. 이어서 단계 S244에서 임시 버퍼와 제 5 스트레치 버퍼(StretchBuffer4)를 소스로 사용하여 스트레치 V 새도맵 함수를 처리하여 제 5 광휘 버퍼(광휘 버퍼4)에 결과를 출력한다.
따라서 이 실시예에서의 광휘 처리 루틴(S230)은 기존 방식에서 광휘 처리를위해 11 회의 렌더패스를 처리하던 부분을 1 회의 렌더패스(S232)와 5 회의 범용 그래픽 프로세싱 유닛(GPGPU) 함수 즉, 광휘 처리 함수(S234 ~ S244)를 통하여 단계별로 광휘 이미지를 생성, 처리함으로써, 부하를 줄일 수 있다.
그리고 최종 처리 루틴(S250)은 도 6에 도시된 바와 같이, 각 단계에 따른 광휘 이미지에 대해 가우시안 블러를 적용하여 블러 합성 함수를 처리(S4)하고, BRDF 스펙큘러 함수를 처리(S5)한다. 즉, 단계 S252에서 광휘 처리 루틴(S230)에서 처리된 광휘 이미지를 제 1 내지 제 5 스트레치 버퍼(StretchBuffer0 ~ StretchBuffer4)로부터 받아서 선형 결합하고, 가우시안 블러 합성 처리하여 최종 백 텍스쳐(FinalBackTexture)를 생성하고, 단계 S254에서 최종 백 텍스쳐(FinalBackTexture)를 BRDF 스펙큘러 함수를 이용하여 빛의 좌표, 3 차원 맵핑시키고, 단계 S256에서 프레넬(Fresnel) 효과를 위한 스펙큘러를 계산한다. 이어서 단계 S258에서 스펙큘러, 이미지 좌표계로 맵핑하여 최종 마지막 실사 피부가 표현된 최종 텍스쳐를 생성한다.
따라서 이 실시예의 최종 처리 루틴(S250)은 범용 그래픽 프로세싱 유닛(GPGPU) 함수와 연동하여 최종 텍스쳐 데이터에 대한 작업을 처리한다. 즉, 최종 처리 루틴(S250)은 범용 그래픽 프로세싱 유닛(GPGPU) 함수로 각 단계의 광휘 이미지에 대한 가우시안 블러를 적용하여 확산 프로파일 효과를 나타내고, BRDF 스펙큘러에 대한 효과도 최종 결과 이미지에 맵핑시켜서 실사 피부가 표현된 텍스쳐를 생성한다.
계속해서 도 7은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터 렌더링 시스템의 구성을 도시한 블럭도이다.
도 7을 참조하면, 이 실시예의 3 차원 캐릭터 렌더링 시스템(300)은 컨텐츠에 포함되는 복수 개의 3 차원 캐릭터들에 대한 실사 피부 표현을 하기 위하여, 3 차원 캐릭터의 얼굴 피부에 대한 이미지를 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 렌더링 처리하는 복수 개의 실사 피부 처리 모듈(310)을 구비하고, 이들을 통해 병렬 처리한다.
이를 위해 이 실시예의 3 차원 캐릭터 렌더링 시스템(300)은 복수 개의 실사 피부 처리 모듈(310)과, 스레드 풀 모니터(330)를 포함한다.
구체적으로, 실사 피부 처리 모듈(310)은 범용 그래픽 프로세싱 유닛(GPGPU)을 이용하여 컨텐츠에 포함된 각각의 3 차원 캐릭터들의 실사 피부를 표현하도록 렌더링 처리한다. 이 실사 피부 처리 모듈(310)은 도 2의 구성 요소(312 ~ 316)들과, 자신의 실사 피부 처리 모듈(310)에 대한 스레드 풀(thread pool)을 인식하기 위한 스레드 인식자(318)를 포함한다. 즉, 실사 피부 처리 모듈(310)은 실사 피부 표현을 위해 광휘 처리하는 복수 개의 광휘 처리 모듈(312)들과, 스트레치 처리 모듈(314)과, 최종 처리 모듈(316) 및 스레드 인식자(318)를 포함한다. 이 실시예에서 광휘 처리 모듈(312), 스트레치 처리 모듈(314) 및 최종 처리 모듈(316)들 각각은 도 2에 도시된 것(110, 120, 130)들과 그 기능과 구성이 동일하거나 대체로 유사하므로, 여기서 이들에 대한 구체적인 설명은 생략한다.
먼저, 스레드(thread)는 임의의 프로그램 특히, 프로세스(process) 내에서 실행되는 흐름의 단위로서, 한 프로세스에서 두 개 이상의 스레드를 사용하는 것을 멀티스레드(multi-thread)라고 한다. 스레드를 사용해 작업을 처리하는 방식 중 가장 간단한 방식은 한 개의 스레드를 생성하여 작업을 처리하게 한 후 그 스레드를 제거하는 것이다. 이 방식은 하나의 작업 당 하나의 스레드 만을 사용하며 TPR(thread per request)으로 불린다. TPR은 작업량이 많아질수록 그 처리를 위한 스레드들의 생성 및 제거 시간이 늘어나 작업을 수행하기 위한 시간은 상대적으로 줄어든다.
따라서 처리량(throughput)이 감소되는 문제가 발생하고, 이를 해결하기 위해 스레드 풀(thread pool) 방식을 사용한다. 스레드 풀 방식은 작업을 마친 스레드를 제거하지 않고 대기시켜, 다음 번 작업에 사용할 수 있도록 함으로써 스레드의 생성 및 삭제에 따른 오버헤드를 줄일 수 있다.
스레드 풀 방식은 작업이 빈번하게 발생되고, 처리 시간이 짧은 경우에 사용되는 방식으로서, 스레드 생성 및 삭제를 줄이기 위해 지정된 수만큼 스레드를 유지하고, 이 스레드들은 작업 수행과 대기를 반복하며 작업을 처리한다. 이 스레드 풀 방식은 작업당 한 스레드를 사용하는 기존의 TPR 방식에 비해 스레드 생성 및 삭제로 인한 오버헤드가 줄어들어 작업을 수행하기 위한 시간이 빨라지므로 처리량이 증가하게 된다. 즉, 기존의 TPR 방식은 작업량이 많아질수록 그 처리를 위한 스레드들의 생성 및 제거 시간이 늘어나게 되어, 작업을 수행하기 위한 시간은 상대적으로 줄어든다.
그러므로 실사 피부 처리 모듈(310)은 각각의 실사 피부(RealSkin) 단위의 범용 그래픽 프로세싱 유닛(GPGPU) 모듈에 대한 스레드 풀을 처리한다. 따라서 스레드 인식자(318)는 스레드 풀 모니터(330)로부터 각 실사 피부 처리 모듈(310)에 대한 스레드 풀(thread pool)을 인식하기 위한 인식자를 갖는다. 실사 피부 처리 모듈(310)은 자신의 실사 피부 표현을 처리하기 위한 동작에 대한 플래그(flag)를 각각 설정하고, 정상 동작 상태를 실시간으로 스레드 풀 모니터(330)로 제공한다.
그리고 스레드 풀 모니터(thread pool monitor)(330)는 실사 피부 처리 모듈(310)들 각각으로부터 신호 처리하도록 실사 피부 처리 모듈(310)들에 대한 스레드 풀을 관리한다. 스레드 풀 모니터(330)는 각 캐릭터 마다의 범용 그래픽 프로세싱 유닛(GPGPU) 함수로부터의 반응을 감지하여, 더 이상 실사 피부에 대한 실사 피부 처리 모듈(310)이 할당될 수 없는 한계치가 되었을 때, 실사 피부 처리 모듈(310)이 적용될 수 없어 동작할 수 없다고 판단하여 그 상황을 어플리케이션에 알린다.
그리고 도 8은 본 발명의 다른 실시예에 따른 병렬 처리 방식에 의한 3 차원 캐릭터의 실사 피부 렌더링 처리 수순을 도시한 흐름도이다. 이 수순은 도 7의 3 차원 캐릭터 렌더링 시스템(300)에 의해 처리된다.
도 8을 참조하면, 3 차원 캐릭터 렌더링 시스템(300)은 단계 S400에서 스레스 풀 모니터(330)를 시작시켜서 활성화하고, 단계 S402에서 실사 피부 처리 모듈(310)에 대한 스레드 풀을 생성한다.
단계 S404에서 실사 피부 처리 모듈(310)들 각각에 대한 스레드 인식자를 배정한다. 단계 S406에서 실사 피부 처리 모듈(310)들의 리소스를 초기화한다. 단계 S408에서 스레스 풀 모니터(330)로부터 실사 피부 처리 모듈(310)들의 스레드(thread)에 출력 시작을 알린다.
단계 S410에서 스레스 풀 모니터(330)로 각 실사 피부 처리 모듈(310)들에 대한 스레드 풀 신호를 감시한다. 단계 S412에서 스레스 풀 모니터(330)가 각 실사 피부 처리 모듈(310)들의 최종 텍스쳐에 대한 갱신 상태를 인지한다.
단계 S414에서 스레스 풀 모니터(330)가 실사 피부 처리 모듈(310)의 정상 동작 상태를 판별하기 위하여, 각각의 실사 피부 처리 모듈(310)들로부터 스레드 신호의 유무를 판별한다. 판별 결과, 스레드 신호가 없으면, 이 수순은 단계 S416으로 진행하여 오류가 발생되었음을 어플리케이션으로 알려준다. 그러나 스레드 신호가 있으면, 스레드가 정상 작동하는 것을 의미하므로, 이 수순은 단계 S418로 진행하여 렌더링 과정 즉, 최종 컨텐츠의 렌더패스를 처리하고, 이어서 단계 S420에서 최종 컨텐츠를 화면에 출력한다.
이상에서, 본 발명에 따른 3 차원 캐릭터 렌더링 시스템의 구성 및 작용을 상세한 설명과 도면에 따라 도시하였지만, 이는 실시예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
100 : 3 차원 캐릭터 렌더링 시스템
110 : 광휘 처리 모듈
120 : 스트레치 처리(전처리) 모듈
130 : 최종 처리 모듈
300 : 3 차원 캐릭터 렌더링 시스템
310 : 실사 피부 처리 모듈
330 : 스레드 풀 모니터
110 : 광휘 처리 모듈
120 : 스트레치 처리(전처리) 모듈
130 : 최종 처리 모듈
300 : 3 차원 캐릭터 렌더링 시스템
310 : 실사 피부 처리 모듈
330 : 스레드 풀 모니터
Claims (13)
- 3 차원 캐릭터 렌더링 시스템에 있어서:
3 차원 캐릭터 모델의 피부 계층에 따른 단계별로 광휘 텍스쳐를 생성하여 순차적으로 블러 처리하는 복수 개의 광휘 처리 모듈들과;
화면 좌표와 이미지 좌표를 맵핑하여 스트레치 처리된 이미지 데이터를 생성하고, 전처리로 스트레치 새도맵을 생성하여 상기 광휘 처리 모듈들 각각에서 광휘 텍스쳐를 블러 처리하도록 전처리하는 스트레치 처리 모듈 및;
블러 처리된 광휘 텍스쳐들을 상기 광휘 처리 모듈들로부터 받아서 선형 결합하고, 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여 최종 텍스쳐를 생성, 출력하는 최종 처리 모듈을 포함하되;
상기 광휘 처리 모듈, 상기 스트레치 처리 모듈 및 상기 최종 처리 모듈 각각은 범용 그래픽 프로세싱 유닛 모듈로 구비되며;
상기 광휘 처리 모듈은;
3 차원 캐릭터에 대한 광휘 텍스쳐를 생성, 저장하는 광휘 텍스쳐부와;
이미지 좌표를 생성된 광휘 텍스쳐 좌표로 맵핑하는 이미지 좌표 맵퍼부 및;
맵핑된 광휘 텍스쳐를 가우시안 커널(gaussian Kernel)을 사용하여 블러(blur) 처리하는 광휘 처리 함수부를 포함하고;
상기 스트레치 처리 모듈은;
각각의 텍스쳐를 U 축 또는 V 축 방향으로 스트레치 처리하는 스트레치 처리 함수부와;
화면 좌표와 스트레치 U 이미지 데이터와 스트레치 V 이미지 데이터의 이미지 좌표를 맵핑하는 좌표 맵퍼부 및;
범용 그래픽 프로세싱 유닛 모듈의 리소스(resource)인 스트레치 U 새도맵과 스트레치 V 새도맵을 생성하는 스트레치 새도맵 함수부를 포함하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템.
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 최종 처리 모듈은;
상기 광휘 처리 모듈들로부터 블러 처리된 광휘 텍스쳐들을 받아서 선형 결합하는 선형 결합부와;
상기 선형 결합부로부터 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여, 최종 백 텍스처를 생성하고, 최종 백 텍스처로부터 최종 텍스쳐를 생성하여 출력하는 최종 처리 함수부를 포함하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템.
- 3 차원 캐릭터 렌더링 시스템의 처리 방법에 있어서:
범용 그래픽 프로세싱 유닛 모듈을 이용하여 3 차원 캐릭터의 피부 계층에 따른 단계별 이미지로부터 텍스쳐를 스트레치 처리하는 전처리 단계와;
범용 그래픽 프로세싱 유닛 모듈을 이용하여 단계별 이미지로부터 광휘 텍스쳐를 생성, 처리하는 광휘 처리 단계 및;
범용 그래픽 프로세싱 유닛 모듈을 이용하여 광휘 텍스쳐로부터 실사 피부가 표현된 최종 텍스쳐를 생성하여 실시간으로 출력하도록 처리하는 최종 처리 단계를 포함하되;
상기 전처리 단계는;
3 차원 캐릭터의 얼굴 이미지 텍스쳐를 범용 그래픽 프로세싱 유닛 모듈의 스트레치 버퍼에 렌더링하고; 이어서
범용 그래픽 프로세싱 유닛 모듈의 스트레치 버퍼 및 임시 버퍼를 이용하여 스트레치 U 처리 함수 및 스트레치 V 처리 함수를 복수 회 반복 처리하여, U 축 및 V 축 방향으로 스트레치된 텍스쳐를 출력하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템의 처리 방법.
- 삭제
- 제 5 항에 있어서,
상기 광휘 처리 단계는;
3 차원 캐릭터의 얼굴 이미지 텍스쳐를 범용 그래픽 프로세싱 유닛 모듈의 화면 버퍼에 렌더링하고; 이어서
범용 그래픽 프로세싱 유닛 모듈의 임시 버퍼와 스트레치 버퍼 및 광휘 버퍼를 이용하여 광휘 처리 함수 및 스트레치 새도맵 처리 함수를 복수 회 반복 처리하여 단계별로 광휘 이미지를 생성, 처리하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템의 처리 방법.
- 제 7 항에 있어서,
상기 최종 처리 단계는;
상기 광휘 처리 단계에서 처리된 단계별 광휘 이미지를 스트레치 버퍼로부터 받아서 선형 결합하고;
가우시안 블러를 적용하여 블러 합성 함수를 처리하여 최종 백 텍스쳐를 생성하고;
최종 백 텍스쳐를 스펙큘러 함수를 이용하여 빛의 좌표, 3 차원 맵핑시켜서 스펙큘러를 계산하고; 이어서
스펙큘러, 이미지 좌표계로 맵핑하여 실사 피부가 표현된 최종 텍스쳐를 생성하여 출력하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템의 처리 방법.
- 복수 개의 3 차원 캐릭터를 위한 렌더링을 병렬 처리하는 3 차원 캐릭터 렌더링 시스템에 있어서:
컨텐츠에 포함된 복수 개의 3 차원 캐릭터들 각각의 피부에 대한 이미지를 범용 그래픽 프로세싱 유닛을 이용하여 렌더링 처리하고, 자신의 스레드 풀(thread pool)을 인식하기 위한 스레드 인식자를 갖고, 스레드 풀을 처리하는 복수 개의 실사 피부 처리 모듈 및;
상기 실사 피부 처리 모듈로부터 상기 스레드 인식자를 인식하여 상기 실사 피부 처리 모듈들에 대한 스레드 풀을 관리하는 스레드 풀 모니터를 포함하여, 복수 개의 3 차원 캐릭터들 각각의 렌더링을 병렬 처리하되;
상기 스레드 풀 모니터는;
상기 실사 피부 처리 모듈들 각각이 처리하는 각 캐릭터 마다의 범용 그래픽 프로세싱 유닛 함수로부터의 반응을 감지하여, 더 이상 실사 피부에 대한 상기 실사 피부 처리 모듈이 할당될 수 없는 한계치를 판단하여 해당 실사 피부 처리 모듈이 동작할 수 없다고 판단되면, 어플리케이션으로 알려주는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템.
- 제 9 항에 있어서,
상기 실사 피부 처리 모듈은;
3 차원 캐릭터 모델의 피부 계층에 따른 단계별로 광휘 텍스쳐를 생성하여 순차적으로 블러 처리하는 복수 개의 광휘 처리 모듈들과;
화면 좌표와 이미지 좌표를 맵핑하여 스트레치 처리된 이미지 데이터를 생성하고, 전처리로 스트레치 새도맵을 생성하여 상기 광휘 처리 모듈들 각각에서 광휘 텍스쳐를 블러 처리하도록 전처리하는 스트레치 처리 모듈 및;
블러 처리된 광휘 텍스쳐들을 상기 광휘 처리 모듈들로부터 받아서 선형 결합하고, 선형 결합된 광휘 텍스쳐를 블러 합성 함수, 스펙큘러 함수, 백 텍스쳐 복사를 순차적으로 처리하여 최종 텍스쳐를 생성, 출력하는 최종 처리 모듈을 포함하하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템.
- 삭제
- 3 차원 캐릭터 렌더링 시스템의 처리 방법에 있어서:
상기 3 차원 캐릭터 렌더링 시스템의 스레스 풀 모니터를 활성화시켜서 복수 개의 실사 피부 처리 모듈들 각각에 대한 스레드 풀을 생성하는 단계와;
상기 실사 피부 처리 모듈들 각각에 대한 스레드 인식자를 배정하는 단계와;
상기 실사 피부 처리 모듈들의 리소스를 초기화하는 단계와;
상기 스레스 풀 모니터로부터 상기 실사 피부 처리 모듈들의 스레드에 출력 시작을 알리는 단계와;
상기 스레스 풀 모니터로 상기 실사 피부 처리 모듈들 각각에 대한 스레드 풀 신호를 감시하는 단계와;
상기 스레스 풀 모니터가 상기 실사 피부 처리 모듈들 각각의 최종 텍스쳐에 대한 갱신 상태를 인지하는 단계와;
상기 스레스 풀 모니터가 상기 실사 피부 처리 모듈의 정상 동작 상태를 판별하기 위해 상기 실사 피부 처리 모듈들 각각으로부터 스레드 신호의 유무를 판별하는 단계 및;
판별 결과, 스레드 신호가 있으면, 최종 컨텐츠의 렌더패스를 처리하여 출력하는 단계를 포함하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템의 처리 방법.
- 제 12 항에 있어서,
상기 방법은;
판별 결과, 스레드 신호가 없으면, 어플리케이션으로 오류가 발생되었음을 알려주는 단계를 더 포함하는 것을 특징으로 하는 3 차원 캐릭터 렌더링 시스템의 처리 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150028005A KR101619875B1 (ko) | 2015-02-27 | 2015-02-27 | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 |
US15/550,060 US10403023B2 (en) | 2015-02-27 | 2015-10-15 | Three-dimensional character rendering system using general purpose graphic processing unit, and processing method thereof |
PCT/KR2015/010872 WO2016137080A1 (ko) | 2015-02-27 | 2015-10-15 | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150028005A KR101619875B1 (ko) | 2015-02-27 | 2015-02-27 | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101619875B1 true KR101619875B1 (ko) | 2016-05-12 |
Family
ID=56024959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150028005A KR101619875B1 (ko) | 2015-02-27 | 2015-02-27 | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10403023B2 (ko) |
KR (1) | KR101619875B1 (ko) |
WO (1) | WO2016137080A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712221A (zh) * | 2018-12-21 | 2019-05-03 | 成都四方伟业软件股份有限公司 | 三维可视化渲染方法及装置 |
CN112150602A (zh) * | 2020-09-24 | 2020-12-29 | 苏州幻塔网络科技有限公司 | 模型图像的渲染方法和装置、存储介质和电子设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019082819A (ja) * | 2017-10-30 | 2019-05-30 | 株式会社日立製作所 | アクセラレータ部の利用に対する課金を支援するシステム及び方法 |
CN108573480B (zh) * | 2018-04-20 | 2020-02-11 | 太平洋未来科技(深圳)有限公司 | 基于图像处理的环境光补偿方法、装置及电子设备 |
CN109636900A (zh) * | 2018-12-14 | 2019-04-16 | 天津未来科技城开发有限公司 | 一种基于gpu高性能计算的三维管线实时建模方法及*** |
CN112991215A (zh) * | 2021-03-18 | 2021-06-18 | 北京畅游创想软件技术有限公司 | 一种皮肤渲染方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100900823B1 (ko) | 2006-12-02 | 2009-06-04 | 한국전자통신연구원 | 캐릭터 애니메이션 시 피부의 주름 실시간 표현 방법 및장치 |
KR100962531B1 (ko) | 2007-12-11 | 2010-06-15 | 한국전자통신연구원 | 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법 |
US8719553B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for re-circulating a fragment through a rendering pipeline |
KR101104684B1 (ko) | 2008-12-02 | 2012-01-16 | 이화여자대학교 산학협력단 | 관찰 방향 및 조명을 고려한 피부 질감 렌더링 방법 및 그 장치 |
US8587596B2 (en) * | 2010-06-28 | 2013-11-19 | International Business Machines Corporation | Multithreaded software rendering pipeline with dynamic performance-based reallocation of raster threads |
KR101926570B1 (ko) * | 2011-09-14 | 2018-12-10 | 삼성전자주식회사 | 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치 |
US10008034B2 (en) * | 2013-05-03 | 2018-06-26 | Nvidia Corporation | System, method, and computer program product for computing indirect lighting in a cloud network |
-
2015
- 2015-02-27 KR KR1020150028005A patent/KR101619875B1/ko active IP Right Grant
- 2015-10-15 WO PCT/KR2015/010872 patent/WO2016137080A1/ko active Application Filing
- 2015-10-15 US US15/550,060 patent/US10403023B2/en active Active
Non-Patent Citations (1)
Title |
---|
PU Gems 3, https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch14.html(2007.12.31.)* |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109712221A (zh) * | 2018-12-21 | 2019-05-03 | 成都四方伟业软件股份有限公司 | 三维可视化渲染方法及装置 |
CN112150602A (zh) * | 2020-09-24 | 2020-12-29 | 苏州幻塔网络科技有限公司 | 模型图像的渲染方法和装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US10403023B2 (en) | 2019-09-03 |
WO2016137080A1 (ko) | 2016-09-01 |
US20180047204A1 (en) | 2018-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101619875B1 (ko) | 범용 그래픽 프로세싱 유닛을 이용한 3 차원 캐릭터 렌더링 시스템 및 그의 처리 방법 | |
CN111508052B (zh) | 三维网格体的渲染方法和装置 | |
CN108351864B (zh) | 成凹几何密铺 | |
CN108090947B (zh) | 一种面向3d场景的光线追踪优化方法 | |
Ritschel et al. | Micro-rendering for scalable, parallel final gathering | |
US7755626B2 (en) | Cone-culled soft shadows | |
Schütz et al. | Real-time continuous level of detail rendering of point clouds | |
Supan et al. | Image based shadowing in real-time augmented reality | |
JP3626144B2 (ja) | 立体オブジェクトデータからの漫画的表現の2次元画像の生成方法および生成プログラム | |
US8294713B1 (en) | Method and apparatus for illuminating objects in 3-D computer graphics | |
US10198788B2 (en) | Method and system of temporally asynchronous shading decoupled from rasterization | |
US10198856B2 (en) | Method and system of anti-aliasing shading decoupled from rasterization | |
Ganovelli et al. | Introduction to computer graphics: A practical learning approach | |
JP3720890B2 (ja) | 画像生成装置 | |
US20180005432A1 (en) | Shading Using Multiple Texture Maps | |
JP2003115055A (ja) | 画像生成装置 | |
Nienhaus et al. | Sketchy drawings | |
US20140160124A1 (en) | Visible polygon data structure and method of use thereof | |
JP2003168130A (ja) | リアルタイムで合成シーンのフォトリアルなレンダリングをプレビューするための方法 | |
US20230274493A1 (en) | Direct volume rendering apparatus | |
JP6619598B2 (ja) | プログラム、記録媒体、輝度演算装置及び輝度演算方法 | |
JP2007310682A (ja) | 透過オブジェクト描画方法 | |
JP2023510164A (ja) | ハイブリッドビニング | |
US20190295214A1 (en) | Method and system of temporally asynchronous shading decoupled from rasterization | |
Bernik et al. | Generating Terrain And Hi Details Using Texture Maps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190410 Year of fee payment: 4 |