KR101008809B1 - 쉐이더 자동 생성 방법과 쉐이더 생성 시스템 - Google Patents

쉐이더 자동 생성 방법과 쉐이더 생성 시스템 Download PDF

Info

Publication number
KR101008809B1
KR101008809B1 KR1020080013245A KR20080013245A KR101008809B1 KR 101008809 B1 KR101008809 B1 KR 101008809B1 KR 1020080013245 A KR1020080013245 A KR 1020080013245A KR 20080013245 A KR20080013245 A KR 20080013245A KR 101008809 B1 KR101008809 B1 KR 101008809B1
Authority
KR
South Korea
Prior art keywords
shader
shading
graph
generating
output
Prior art date
Application number
KR1020080013245A
Other languages
English (en)
Other versions
KR20090087388A (ko
Inventor
표태수
Original Assignee
(주) 라온 엔터테인먼트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주) 라온 엔터테인먼트 filed Critical (주) 라온 엔터테인먼트
Priority to KR1020080013245A priority Critical patent/KR101008809B1/ko
Publication of KR20090087388A publication Critical patent/KR20090087388A/ko
Application granted granted Critical
Publication of KR101008809B1 publication Critical patent/KR101008809B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

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

Abstract

본 발명은 예술가가 숙련된 프로그래머의 도움 없이 쉽게 쉐이더 프로그램을 생성할 수 있도록 하는 방법에 관한 것이다. 본 발명에서는 3D 모델의 표면 재질의 특성을 그래프형태의 구조로 정의하고, 그러한 쉐이딩그래프에서 자동으로 쉐이더 프로그램을 생성하는 방법을 제안한다. 본 발명에 따른 쉐이더 프로그램 생성방법은 쉐이딩그래프를 분석해서 최종출력에 영향을 미치는 유효한 요소들과 그렇지 않은 것을 분리하고 실행순서를 결정하는 단계, 쉐이더의 실행에 필요한 정보들을 수집해서 버텍스쉐이더출력/픽셀쉐이더입력 테이블 생성하는 단계, 버텍스쉐이더의 정점처리 코드를 생성하는 단계, 픽셀쉐이더의 출력계산 코드를 생성하는 단계를 포함한다.
실시간삼차원그래픽스, 쉐이더

Description

쉐이더 자동 생성 방법과 쉐이더 생성 시스템{Method for automatically generating shader and shader generation system}
실시간 3차원 응용프로그램에서 3D 모델의 재질을 간단히 기술한 쉐이딩그래프로부터 쉐이딩프로그램의 생성방법과 쉐이더 생성 시스템에 관한 것으로서, 보다 상세하게는 숙련된 프로그래머의 코딩작업 없이 간단한 쉐이딩그래프로부터 컴퓨터의 하드웨어의 성능, 사용자가 설정한 그래픽 옵션, 3D 모델이 렌더링되는 환경 등을 고려하여 적절한 쉐이더를 생성하는 방법과 쉐이더 생성시스템에 관한 것이다.
최신의 그래픽어댑터는 프로그래밍 가능한 구조를 가지고 있어서 "쉐이더"라 불리는 프로그램을 실행할 수 있다. 그래픽어댑터의 이러한 프로그래밍 가능한 구조는 다양하고 화려하며 사진 같은 실시간 3차원 영상을 구현하게 해준다. 그러나 예술가가 이러한 그래픽어댑터에서 표현되는 3D 콘텐츠를 제작하기 위해서는 숙련된 프로그래머의 도움이 필수적이다. 예술가와 숙련된 프로그래머의 의존관계는 실시간 3D 콘텐츠 제작에서 중요한 걸림돌로 작용한다. 또한 3D 게임의 경우에는 실행되는 컴퓨터의 성능이나 그래픽 어댑터의 종류와 기능이 다양하고 3D 모델이 렌 더링되는 광원의 특성이나 개수 등과 같은 다양한 조명환경에 맞게 최적화된 쉐이더프로그램을 제작해서 사용한다. 왜냐하면 현재의 하드웨어의 성능의 한계문제로 하나의 재질에 대해서 다양한 환경에 모두 적용 가능한 쉐이더프로그램을 제작할 수 없는 상황이기 때문이다. 이러한 문제를 해결하기위해 본 발명은 다양한 렌더링환경에 맞는 쉐이더프로그램을 자동으로 생성하는 방법을 제공하는 것이 목적이다.
상기의 목적을 이루기 위한 쉐이더 자동 생성 방법은 3D 모델 재질의 특성을 표현하는 쉐이딩그래프를 분석하는 단계와 버텍스쉐이더에서 픽셀쉐이더로 전달되는 버텍스쉐이더의 출력정보를 추출하는 단계와 버텍스쉐이더의 정점처리코드를 생성하는 단계와 쉐이딩그래프를 쉐이딩함수의 정의와 호출코드로 표현하는 단계와 쉐이딩함수에 픽셀쉐이더의 입력을 전달하는 코드를 생성하고 최종 계산결과를 픽셀쉐이더에서 출력하는 코드를 생성하는 단계를 포함한다.
숙련된 프로그래머의 도움 없이도 예술가가 자유롭게 원하는 쉐이더를 생성 가능하도록 한다.
쉐이딩그래프는 쉐이딩요소 테이블과 쉐이딩요소의 입출력 연결테이블로 구성된다. 쉐이딩그래프는 그래프형태의 자료구조로서 쉐이딩요소 테이블이 그래프의 노드(Node)에 입출력 연결테이블이 그래프의 에지(Edge)대응된다. 쉐이딩요소는 여러가지 3D 모델 표면의 재질의 기본적인 특성을 정의하는 기본요소이다. 이러한 쉐 이딩요소는 예를 들면 텍스쳐색상, 확산조명색상, 반사조명색상, 프레넬반사, 법선 맵, 반사 맵 등과 같은 조명계산의 기본요소와 사칙연산과 색상의 블렌딩 계산과 색상의 원색분리 등의 색상의 혼합을 계산하는 요소와 게임엔진이나 렌더링엔진에서 전달되는 정보를 읽는 요소 등이 있다. 이러한 쉐이딩그래프는 특별히 제작된 프로그램을 통해서 예술가가 쉽고 빠르게 제작할 수 있다.
쉐이더프로그램은 일반적으로 버텍스쉐이더(Vertex Shader)와 픽셀쉐이더(Pixel Shader)로 구성된다. 버텍스쉐이더는 3D 모델의 정점(Vertex)정보를 화면좌표로 변환하고 픽셀쉐이더에서 필요로하는 입력정보들을 계산하는 기능을 가지고 있다. 픽셀쉐이더는 화면에 그려질 각각의 픽셀의 색상과 깊이정보 등을 계산하는 프로그램이다.
도 1은 쉐이더 자동 생성 방법을 도시한 흐름도이다. 본 발명에 따른 쉐이더 자동 생성 방법은 소정의 쉐이더 관리 시스템에서 수행될 수 있고, 상기의 쉐이더 관리 시스템은 게임엔진이나 렌더링엔진에 의해 제어될 수 있다.
단계(101)에서, 쉐이딩그래프를 분석한다. 쉐이딩그래프를 구성하는 각각의 쉐이딩요소 사이의 입출력의 연결 관계를 분석해서 최종출력에 영향을 미치는 유효한 요소들과 그렇지 않은 것을 분리한다. 이것은 쉐이딩환경(하드웨어의 성능, 그래픽옵션설정, 광원의 수와 종류 등과 같은 쉐이딩되는 조건)에따라 쉐이딩요소의 계산방식이 달라지거나 제외될 수 있기 때문이다. 쉐이딩요소들의 입출력의 의존관계를 분석해서 실행순서를 결정한다.
단계(102)에서, 쉐이더의 실행에 필요한 정보들을 수집해서 버텍스쉐이더출 력/픽셀쉐이더입력 테이블 생성한다. 픽셀쉐이더에서 쉐이딩계산에서 필요한 정보 중에 버텍스쉐이더에서 계산되어 픽셀쉐이더로 전달될 필요가 있는 것들이 있다. 이러한 정보는 픽셀쉐이더가 최종의 색상과 깊이정보를 결정하는데 필요한 것으로써, 버텍스쉐이더에서 정점을 처리하면서 수집을 통해 계산하여 출력되면 픽셀쉐이더의 입력으로서 전달되는 정보이다. 예를 들면 텍스쳐에서 해당 픽셀에 대응되는 텍스쳐 좌표, 확산조명을 계산하기위해 필요한 광원의 방향, 해당 픽셀에 대응되는 표면의 법선벡터, 범프맵핑 계산을 위한 표면좌표계(tangent space)의 정보 등이 있다. 버텍스쉐이더출력 / 픽셀쉐이더입력 테이블은 이러한 정보가 버텍스쉐이더의 어떤 출력 레지스터에 출력되어서 픽셀쉐이더의 어떤 입력 레지스터로 전달할지를 결정한다.
단계(103)에서, 버텍스쉐이더의 정점처리 코드를 생성한다. 버텍스쉐이더의 정점처리 코드는 정점좌표의 월드좌표계로 변환하는 코드, 광원의 종류와 개수에 따라 필요한 광원벡터, 하프벡터, 광원거리 등을 계산하는 코드, 픽셀쉐이더가 요구하는 버텍스쉐이더 출력 정보를 계산하는 코드 등을 포함한다.
단계(104)에서, 픽셀쉐이더의 출력계산 코드를 생성한다. 이하 도 2를 참조하여 이 과정을 설명한다.
단계(201)에서, 단계(101)에서 수집된 각각의 쉐이딩요소를 함수의 정의로 변환한다. 이 때 쉐이딩요소의 입력은 함수의 인자로 변환하고 출력은 함수의 출력인자로 변환하며 쉐이딩알고리즘은 함수의 인자에서 출력인자를 계산하는 함수코드로 변환한다.
단계(202)에서, 픽셀쉐이더의 입력정보를 수집하는 코드를 생성한다. 픽셀쉐이더의 입력은 버텍스쉐이더에서 출력레지스터로 출력된 정보가 픽셀쉐이더의 입력레지스터로 전달된 것이다. 단계(102)결정된 버텍스쉐이더출력/픽셀쉐이더입력 테이블로부터 픽셀쉐이더의 각각의 입력 레지스터가 어떤 정보를 가지고 있는지를 판단할 수 있다.
단계(203)에서, 쉐이딩 계산 코드를 생성한다. 이하 도 3을 참조하여 이 과정을 설명한다.
단계(301)에서, 단계(201)에서 생성한 함수의 입출력 인자로 전달될 변수를 할당하고 대입하는 코드를 생성한다. 이 때 쉐이딩그래프의 입출력 연결 테이블을 참조해서 함수 호출인자의 전달경로를 결정한다.
단계(302)에서, 단계(101)에서 계산된 쉐이딩요소의 실행순서에 따라서 단계(201)에서 생성한 함수들을 호출하는 코드를 생성한다.
단계(303)에서, 최종 계산된 색상을 픽셀쉐이더의 출력레지스터로 출력하는 코드를 생성한다.
도 4는 쉐이딩그래프의 클래스 다이어그램을 도시한 도면이다.
쉐이딩그래프(ShadingGraph, 401)는 쉐이딩노드(ShadingNode, 402)와 쉐이딩노드 간의 입력과 출력을 연결정보를 갖는 입력파라메터(InputParameter, 403)로 구성되며, 하나의 쉐이딩노드(402)는 하나의 쉐이딩요소(ShadingElement, 405)의 실행에 대응된다. 쉐이딩요소(405)는 쉐이딩알고리즘(ShadingAlgorithm, 406)과 버텍스쉐이더출령정보를 담은 VertexShaderOutputInfo(407)와 쉐이딩입력정보 (ShadingInputInfo, 408)와 쉐이딩출력정보(ShadingOutputInfo, 409)로 구성된다.
도 5는 쉐이더 생성시스템의 클래스 다이어그램을 도시한 도면이다.
쉐이딩그래프로부터 쉐이더를 생성하기 위한 쉐이더 생성시스템은 쉐이더생성기(ShaderGenerator, 501)가 쉐이더캐쉬(ShaderCache, 502)를 통해서 쉐이더의 생성할지 여부를 판단하며, 쉐이더의 생성이 필요할 때 쉐이딩환경(ShadingContext, 503)을 참조하여 쉐이더(Shader, 504)객체를 생성한다. 쉐이더(504)는 버텍스쉐이더(VertexShader, 505)객체와 픽셀쉐이더(PixelShader, 506), 렌더러의 상태 변수를 담은 RenderState(507)객체로 구성된다.
도 6은 쉐이더 생성시스템을 사용하는 구성의 일례를 도시한 것이다.
쉐이딩그래프제작도구(601)은 예술가가 편리하게 쉐이딩그래프를 제작 할 수 있는 외부 제작툴이다. 쉐이딩그래프제작도구는 쉐이딩요소라이브러리(602)의 여러 가지 쉐이딩요소를 배치하고 입·출력연결을 만들어 쉽게 쉐이딩그래프(603)를 제작하도록 도와주는 제작툴이다. 렌더링시스템(605)은 예를 들면 게임엔진의 렌더링 시스템과 같은 3D응용프로그램의 렌더링을 담당하는 시스템이며, 이 렌더링 시스템은 쉐이더생성시스템(606)을 조종하게된다. 쉐이더생성시스템은 렌더링시스템의 요청에 따라 필요한 쉐이더의 생성이 필요한지를 판단하여 쉐이더캐쉬(604)에서 해당하는 쉐이더를 식별하여 사용하거나 새로이 쉐이더를 생성한다. 쉐이딩언어컴파일러(607)는 HLSL, GLSL, Cg 등의 하이레벨의 쉐이딩 언어로 작성된 소스로부터 저수준의 어셈블리 코드를 생성하는 컴파일러이다.
도 7은 쉐이더생성방법을 수행하는 데 채용될 수 있는 범용 컴퓨터 장치의 내부 블록도이다. 컴퓨터 장치는(700) 중앙처리장치(CPU, 701), 하드디스크와 같은 비휘발성메모리의 대용량 저장장치(702), 휘발성 메모리(RAM, 703), 그래픽 처리 장치(GPU, 704)와 그에 연결된 그래픽 메모리(705), 디스플레이 장치로 구성된다. 그래픽 처리장치는 쉐이더프로그램을 구동할 수 있는 장치로서 프로그래밍가능한 그래픽 처리장치(Programmable GPU)이어야한다.
쉐이더를 사용하는 3D게임을 비롯한 실시간의 3D 렌더링을 구현하는 다양한 프로그램에서 활용될 수 있다. 숙련된 프로그래머의 도움 없이도 예술가가 쉐이더를 활용한 3D 모델의 다양한 재질적 특성의 디자인이 가능하다.
도 1, 도2, 도 3은 쉐이더 자동 생성 방법을 도시한 흐름도이다.
도 4는 쉐이딩그래프의 클래스 다이어그램을 도시한 도면이다.
도 5는 쉐이더생성시스템의 클래스 다이어그램을 도시한 도면이다
도 6은 쉐이더생성시스템의 구성의 일례를 도시한 것이다.
도 7은 쉐이더생성방법을 수행하는 데 채용될 수 있는 범용 컴퓨터 장치의 내부 블록도이다.

Claims (2)

  1. 쉐이더를 생성하는 방법에 있어서, 3D모델의 재질을 그래프형태의 구조로 표현하고, 그 쉐이딩그래프를 분석하는 단계와 버텍스쉐이더의 정점처리 코드를 생성하는 단계와 픽셀쉐이더의 출력계산 코드를 생성하는 단계를 포함하는 것을 특징으로 하는 쉐이더 생성 방법.
  2. 쉐이더를 생성하는 방법에 있어서, 쉐이더그래프의 각 노드를 함수의 정의로 변환하는 단계, 그래프의 에지(Edge)를 함수의 호출과 인자의 전달 코드로 변환하는 단계를 포함하는 것을 특징으로 하는 쉐이더 생성 방법.
KR1020080013245A 2008-02-12 2008-02-12 쉐이더 자동 생성 방법과 쉐이더 생성 시스템 KR101008809B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080013245A KR101008809B1 (ko) 2008-02-12 2008-02-12 쉐이더 자동 생성 방법과 쉐이더 생성 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080013245A KR101008809B1 (ko) 2008-02-12 2008-02-12 쉐이더 자동 생성 방법과 쉐이더 생성 시스템

Publications (2)

Publication Number Publication Date
KR20090087388A KR20090087388A (ko) 2009-08-17
KR101008809B1 true KR101008809B1 (ko) 2011-01-14

Family

ID=41206454

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080013245A KR101008809B1 (ko) 2008-02-12 2008-02-12 쉐이더 자동 생성 방법과 쉐이더 생성 시스템

Country Status (1)

Country Link
KR (1) KR101008809B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952842B2 (en) 2014-12-18 2018-04-24 Samsung Electronics Co., Ltd Compiler for eliminating target variables to be processed by the pre-processing core

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050008132A (ko) * 2003-07-14 2005-01-21 한국과학기술연구원 (알콕시폴리옥시알킬렌글리콜)알킬 불포화카르복실산디에스테르 화합물의 제조방법
KR20070098056A (ko) * 2006-03-30 2007-10-05 엘지전자 주식회사 데이터 방송 어플리케이션을 제어하는 방법, 및 이를처리하는 방송 수신기

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050008132A (ko) * 2003-07-14 2005-01-21 한국과학기술연구원 (알콕시폴리옥시알킬렌글리콜)알킬 불포화카르복실산디에스테르 화합물의 제조방법
KR20070098056A (ko) * 2006-03-30 2007-10-05 엘지전자 주식회사 데이터 방송 어플리케이션을 제어하는 방법, 및 이를처리하는 방송 수신기

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9952842B2 (en) 2014-12-18 2018-04-24 Samsung Electronics Co., Ltd Compiler for eliminating target variables to be processed by the pre-processing core

Also Published As

Publication number Publication date
KR20090087388A (ko) 2009-08-17

Similar Documents

Publication Publication Date Title
CA2631639C (en) A method to render a root-less scene graph with a user controlled order of rendering
US7394464B2 (en) Preshaders: optimization of GPU programs
Shen et al. Full system simulation with QEMU: An approach to multi-view 3D GPU design
EP2973412B1 (en) Conservative partitioning for rendering a computer-generated animation
US9947132B2 (en) Material representation data structure and method of representing a material for digital image synthesis
Jones et al. Physically based global illumination calculation using graphics hardware
Liu et al. Function-defined shape metamorphoses in visual cyberworlds
KR101008809B1 (ko) 쉐이더 자동 생성 방법과 쉐이더 생성 시스템
US10062140B2 (en) Graphics processing systems
Peng et al. LLVM RISC-V RV32X Graphics Extension Support and Characteristics Analysis of Graphics Programs
Ferraz et al. Benchmarking Vulkan vs OpenGL Rendering on Low-Power Edge GPUs
US20120102507A1 (en) Streaming programming generator
Jiang et al. Pavilion: Bridging Photo-Realism and Robotics
US20110032258A1 (en) Source code generator for a graphics card
JP5848071B2 (ja) 均質な媒質中の光の散乱を推定する方法
CN111767046A (zh) 一种着色器代码复用方法及终端
Ragan-Kelley Practical interactive lighting design for RenderMan scenes
Apers et al. Interactive Light Map and Irradiance Volume Preview in Frostbite
Woxler Efficient generation and rendering of tube geometry in unreal engine: Utilizing compute shaders for 3d line generation
Haaser et al. Cosmo: Intent-based composition of shader modules
Leiro et al. Development of a Node-Based Material Editor.
Crawford Shader optimization and specialization
Kurfess et al. GPU for CAD
Salgado To Generate Shaders for GPU Execution
Elkin Porting your VR title to oculus quest

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161013

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171101

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181017

Year of fee payment: 9