KR101893034B1 - 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법 - Google Patents

절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법 Download PDF

Info

Publication number
KR101893034B1
KR101893034B1 KR1020137005330A KR20137005330A KR101893034B1 KR 101893034 B1 KR101893034 B1 KR 101893034B1 KR 1020137005330 A KR1020137005330 A KR 1020137005330A KR 20137005330 A KR20137005330 A KR 20137005330A KR 101893034 B1 KR101893034 B1 KR 101893034B1
Authority
KR
South Korea
Prior art keywords
filter
graph
image
texture
module
Prior art date
Application number
KR1020137005330A
Other languages
English (en)
Other versions
KR20130092573A (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 알레고히뜨믹
Publication of KR20130092573A publication Critical patent/KR20130092573A/ko
Application granted granted Critical
Publication of KR101893034B1 publication Critical patent/KR101893034B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/003Reconstruction from projections, e.g. tomography
    • G06T11/006Inverse problem, transformation from projection-space into object-space, e.g. transform methods, back-projection, algebraic methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/80Creating or modifying a manually drawn or painted image using a manual input device, e.g. mouse, light pen, direction keys on keyboard

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

본 발명은 하나 이상의 마이크로프로세서, 메모리 및 명령 리스트를 포함하며, 절차 포맷의 절차 텍스처를 편집하고, 편집된 절차 데이터에 기초하여 래스터 포맷의 텍스처를 생성하는, 절차 텍스처를 편집 및 생성하기 위한 편집 및 생성 시스템으로서, 절차 포맷의 텍스처를 형성하거나 변경하기 위한 사용자 인터페이스를 제공하는 편집 도구; 최적화된 절차 포맷의 그래프 데이터를 저장하기 위해, 선형화 모듈, 파라미터 효과 추적 모듈 및 그래프 데이터 모듈을 구비하는 최적화 장치; 및 래스터 텍스처를 생성하는 렌더링 엔진;을 포함하는 편집 및 생성 시스템에 관한 것이다. 본 발명은 또한 대응하는 편집 및 생성 방법에 관한 것이다.

Description

절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법{SYSTEM AND METHOD FOR EDITING, OPTIMISING, AND RENDERING PROCEDURAL TEXTURES}
본 발명은 절차 포맷의 절차 텍스처를 편집될 수 있게 하고, 편집된 절차 데이터에 기초하여 텍스처가 래스터 포맷으로 생성될 수 있게 하는, 절차 텍스처를 편집하고 생성하기 위한 시스템에 관한 것이다. 본 발명은 보다 상세하게는 대응하는 편집 및 생성 방법에 관한 것이다.
많은 그래픽 애플리케이션은 상당한 메모리 공간의 사용을 초래하는 상당한 양의 데이터를 처리할 것을 요구하고, 이 처리는 다수의 복잡한 계산을 요구한다. 또한, 비디오 게임, 트레이닝 시물레이터, 비디오 편집 또는 합성 소프트웨어와 같은 특정 유형의 대화식 그래픽 애플리케이션은 만족스러운 사용자 경험을 제공하기 위해 가능한 한 그 응답 시간을 최소화시켜야 한다. 이들 애플리케이션은, 예를 들어 객체, 배경 장면, 또는 합성 마스크의 표면 외관을 나타내는 "텍스처(texture)"로 알려진 이미지의 처리에 상당한 양의 자원을 소비한다. 이 텍스처는 색상(color) 정보 뿐 아니라 애플리케이션에 유용한 임의의 다른 파라미터를 저장하는데 사용된다. 비디오 게임에서, 텍스처는 일반적으로 색상, 작은 표면 특징 뿐 아니라 물질의 반사 계수를 저장한다.
이 텍스처를 편집, 저장, 및 디스플레이하는 것은 그래픽 애플리케이션에서 주요 문제이다. 일반적으로, 텍스처는 그래픽 디자이너에 의해 페인팅(painted)되고, 종종 사진에 기초한다. 일단 페인팅되면, 텍스처는 고정된 해상도를 가지고, 이를 다른 상황에 적응하는 것은 매우 어렵다. 애플리케이션이 점점 더 많이 텍스처를 사용하므로, 충분한 양의 상이한 텍스처를 핸드 페이팅하는 것은 매우 고가이며, 화면에서 반복을 보는 것은 드문 일이 아니다. 또한, 텍스처는 본 명세서에서 "비트맵(bitmaps)"이라고 언급되는 픽셀(색상 도트)의 어레이로 저장된다. 이것이 압축된 후에도 이러한 정보는 DVD 또는 하드 디스크와 같은 대용량 매체에 저장하는데 매우 많은 비용이 들고, 그리고 네트워크를 통해 전송하는 데 매우 느리다.
물론, 이러한 문제를 충족시키기 위해 특히 "절차 텍스처(procedural texture)"라는 개념의 기술이 제안되었다. 이 접근법에 따르면, 이미지는 핸드 페인팅으로부터가 아니라 계산으로부터 초래된다. 특정 조건 하에서, 이미지가 디스플레이되기 직전 마지막 순간에 이미지의 계산이 만들어질 수 있어서, 이에 따라 전체 이미지를 저장할 필요성을 감소시킬 수 있다. 절차 텍스처에 변화를 도입하여 반복을 피하는 것이 또한 용이하다. 그러나, 절차 텍스처는 그래픽 디자이너에 의해 용이하게 형성되거나 조작될 수 없고, 그 사용은 소수의 특정 유형의 물질로 제한되어 있다. 수많은 시도에도 불구하고, 이 시스템이 절차 텍스처를 효율적으로 편집, 조작, 및 디스플레이하기 위한 포괄적인 도구를 제공하는 것이 아니었다.
이러한 단점을 극복하기 위해 본 발명은 여러 기술적 수단을 제공한다.
제일 먼저, 본 발명의 제 1 목적은 렌더링이 매우 짧은 시간에 또는 심지어 실시간으로 수행되어야 하는 애플리케이션과 사용하기 위한 텍스처를 편집하고 생성하기 위한 장치를 제공하는 것이다.
본 발명의 다른 목적은 렌더링이 매우 짧은 시간에 또는 심지어 실시간으로 수행되어야 하는 애플리케이션과 사용하기 위한 편집 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 렌더링이 매우 짧은 시간에 또는 심지어 실시간으로 수행되어야 하는 애플리케이션과 사용하기 위한 텍스처를 렌더링하기 위한 방법을 제공하는 것이다.
이를 위해, 본 발명은, 적어도 하나의 마이크로프로세서, 메모리 및 명령 리스트를 포함하고, 절차 포맷의 절차 텍스처를 편집하고, 편집된 절차 데이터에 기초하여 래스터 포맷의 텍스처를 생성하기 위해 절차 텍스처를 편집하고 생성하기 위한 시스템으로서,
- 절차 포맷의 텍스처를 형성하거나 변경하기 위해 사용자 인터페이스를 제공하도록 적응된 편집 도구;
- 최적화된 절차 포맷의 그래프 데이터를 저장하기 위해, 선형화 모듈, 파라미터 효과 추적 모듈 및 그래프 데이터 모듈을 구비하는 최적화 장치;
- 최적화된 절차 포맷의 그래프 데이터에 기초하여 래스터 텍스처를 생성하도록 적응되고, 파라미터 리스트 탐색 모듈 M0, 필터 실행 모듈 M1, 파라미터 평가 모듈 M2, 및 각 필터에 대해 실행될 데이터를 구비하는 필터 모듈을 포함하는 렌더링 엔진을 더 포함하는, 절차 텍스처를 편집하고 생성하기 위한 시스템을 제공한다.
본 발명은 절차 텍스처를 디스플레이하기 위해, 편집으로부터 생성에 이르는, 포괄적인 처리 체인을 제공하는 것에 의해 야기되는 모든 문제를 해결한다. 편집 도구는 존재하는 이미지 덩어리(chunk)의 재사용을 촉진하고, 무한한 개수의 기본 텍스처의 변동을 생성할 수 있다. 이 도구는 최종 이미지를 저장하지 않고 오히려 이미지의 설명(description)을 저장하며, 즉, 이것이 계산될 수 있게 하는 연속적인 단계를 저장한다. 대다수의 경우, 이 설명은 "비트맵" 이미지보다 크기가 훨씬 더 작다. 또한, 본 발명에 따른 기술은 그 설명에 기초하여 "비트맵" 이미지의 신속한 생성을 가능하게 하도록 설계되었다. 편집기에서 유도된 설명은 순진한 전력의 사용에 비해 그 생성을 가속화시키기 위해 최적화기로 알려진 성분을 사용하여 준비된다. 애플리케이션은 이 재작업된 설명을 아는 것만 필요하다. 애플리케이션이 텍스처를 사용하고자 할 때, 이 애플리케이션은 "렌더링 엔진"으로 알려진 생성 성분에 재작업된 설명을 "비트맵" 이미지로 변환할 것을 요청한다. 이 "비트맵" 이미지는 이후 종래의 이미지로 사용된다. 이런 점에서, 본 발명에 따른 기술은 존재하는 애플리케이션과 인터페이스하는 것이 매우 간단하기 때문에 간섭이 최소화된다.
유리하게, 필터는 데이터와 수리적 연산자(mathematical operator)를 포함한다.
다른 측면에 따르면, 본 발명은 또한 적어도 하나의 마이크로프로세서, 메모리 및 명령 리스트를 포함하고, 다음 사항을 추가적으로 포함하는 최적화 장치를 제공한다:
- 선형화 모듈;
- 파라미터 추적 모듈;
- 그래프 데이터 모듈("D").
이러한 최적화 장치는 유리하게는 절차 텍스처를 편집하기 위한 장치에 통합된다. 대안적인 실시예에서, 이 최적화 장치는 렌더링 엔진에 통합된다. 또 다른 실시예에서, 이 최적화 장치는 제 3 자 애플리케이션에 통합된다.
더 다른 측면에 따르면, 본 발명은, 절차 포맷의 텍스처 또는 이미지를 렌더링하기 위한 렌더링 엔진으로서, 적어도 하나의 마이크로프로세서, 메모리 및 명령 리스트를 포함하고,
- 수행될 과정의 리스트를 탐색하기 위한 리스트 탐색 모듈(M0);
- 필터 실행 모듈(M1);
- 파라미터 평가 모듈(M2);
- 필터 각각에 대해 실행될 데이터를 구비하는 필터 모듈을 더 포함하는, 렌더링 엔진을 제공한다.
유리하게는, 절차 포맷의 텍스처를 렌더링하기 위한 엔진은 적어도 하나의 이미지 생성 단계를 포함하는 애플리케이션에 통합되고, 상기 생성은 최적화된 절차 포맷의 그래프 데이터에 기초하여 수행된다.
또 다른 측면에 따르면, 본 발명은 텍스처 생성 및 편집 시스템을 위한 절차 텍스처를 편집하기 위한 방법으로서,
- 편집 도구를 사용하여, 절차 포맷의 그래프 데이터를 생성하는 단계;
- 생성된 데이터를 최적화 장치를 사용하여 최적화된 절차 포맷의 그래프 데이터로 최적화하는 단계를 포함하는, 편집 방법을 제공한다.
더 다른 측면에 따르면, 본 발명은, 렌더링 엔진을 위한 절차 텍스처를 생성하기 위한 방법으로서, 포함된 각 필터에 대해,
- 최적화된 절차 포맷의 그래프 데이터의 리스트를 탐색하는 단계;
- 절차 최적화된 포맷의 상기 그래프 데이터로부터, 고정된 파라미터 값에 대해 수행된 계산에 사용된 파라미터를 판독하는 단계;
- 비 고정된 파라미터의 값을 계산하기 위해 사용자 함수를 평가하는 단계;
- 현재 노드의 계산에 소비될 중간 결과의 메모리 위치를 복구하는 단계;
- 대응하는 래스터 데이터를 결정하기 위해 최적화된 절차 포맷의 그래프에 대해 현재 데이터의 계산을 수행하는 단계;
- 결과 이미지를 메모리에 저장하는 단계; 및
포함된 필터들 모두가 처리된 경우, 생성된 래스터 텍스처를 호스트 애플리케이션에 이용가능하게 하는 단계를 포함하는, 생성 방법을 제공한다.
모든 구현 상세는 단지 비 제한적인 예를 위하여 제공된 도 1 내지 도 10을 참조하여 이하 상세한 설명에서 제시된다.
- 도 1a 및 도 1b는 본 발명에 따른 텍스처의 편집, 최적화 및 생성 또는 렌더링과 관련된 주요 단계를 도시하는 도면;
- 도 2는 서브그래프를 랩핑(wrapping)하고 특정 파라미터를 재디스플레이하는 일례를 도시하는 도면;
- 도 3은 마스크를 사용하여 텍스처 합성의 일례를 도시하는 도면;
- 도 4는 편집 그래프를 리스트로 변환하는 일례를 도시하는 도면;
- 도 5는 본 발명에 따른 편집 도구를 구현하는 장치의 일례를 도시하는 도면;
- 도 6은 편집 도구의 상호 작용 및 데이터 관리의 일례를 도시하는 도면;
- 도 7은 본 발명에 따른 최적화기의 일례를 도시하는 도면;
- 도 8은 본 발명에 따른 렌더링 엔진을 구현하는 장치의 일례를 도시하는 도면;
- 도 9는 렌더링 엔진에 의해 사용된 리스트 탐색의 일례를 도시하는 도면;
- 도 10은 본 발명에 따른 편집 시스템에 의해 편집된 절차 그래프의 일례를 도시하는 도면.
제안된 발명은 그래프의 형태의 이미지를 나타낸다. 그래프의 각 노드는 하나 이상의 출력 이미지를 생성하기 위해 하나 이상의 입력 이미지{블러(blur), 왜곡(distortion), 색상 변경(color change), 등}에 연산 동작(operation) 또는 필터를 적용한다. 각 노드는 사용자에 의해 조작될 수 있는 파리미터(강도, 색상, 랜덤 입력, 등)를 구비한다. 그래프 자체는 그래프의 출력 이미지 전부에 영향을 미치는, 사용자에 의해 조작될 수 있는 다수의 파라미터를 더 구비한다. 필터에 특정되거나 또는 전체 그래프에 공통적인 파라미터들은 자체적으로 사용자 정의 산술 표현식(user-defined arithmetic expressions)을 통해 다른 파라미터에 의해 제어될 수 있다. 특정 노드는 임의의 입력 이미지를 "소비"함이 없이 그 파라미터로부터 직접 이미지를 생성한다. 그래프 실행 동안, 이들은 보통 제일 먼저 계산되는 노드이며, 이에 의해 출력 이미지를 생성하기 위해 점진적으로 재작업될 시작 이미지를 제공한다.
편집 그래프는 3종류의 노드, "입력", "합성" 및 "출력" 노드로 구성된 방향성 비사이클 그래프(DAG: directed acyclic graph)이다:
- "입력" 유형의 노드는 선택 사항이며, 계산시에 생성기에 공급되는 존재하는 이미지에 대해 필터를 설계하는 데 사용된다;
- "합성" 노드는 제로(zero), 하나 이상의 노드를 입력으로 사용하여 원자 연산 동작(atomic operations)을 인코딩한다. 각 합성 노드는 미리 결정된 필터링 동작의 원자 유형의 일례(instance)이다. 모든 유형의 원자 연산 동작은 알려져 있으며 생성기에 의해 구현된다;
- "출력" 노드는 사용자가 획득하기를 원하는 계산 결과를 한정한다.
이 구조에 순종하는 그래프의 일례는 도 10에 제공된다. 이 도 10에서 다음 사항이 식별될 수 있다:
- 입력 이미지를 취하지 않고 다운스트림 필터에 의해 사용되는 이미지를 생성하는 5개의 입력 노드;
- 다른 필터를 위해 의도된 중간 이미지를 제공하지는 않으나, 그래프로부터 유래하고 호스트 애플리케이션을 위해 의도된 이미지를 제공하는 4개의 출력 노드;
- 하나 또는 여러 개의 중간 이미지를 소비하고, 하나 또는 여러 개의 중간 이미지를 생성하는 중간 노드.
소비되는 이미지와 생성되는 이미지는 2개의 상이한 유형의 이미지, 즉 RGBA(적색/녹색/청색/불투명색) 채널을 사용하는 색상 이미지 또는 단 하나의 휘도 채널만을 저장하는 흑색과 백색 이미지일 수 있다. 합성 노드의 입력은 원자 연산 동작에 의해 사용된 이미지를 나타낸다: 그 수와 각각의 채널 번호는 원자 연산 동작의 유형에 의해 결정된다. 합성 노드는 원자 연산 동작의 유형에 의해 결정된 채널의 수를 구비하며 연산 동작으로부터 유래하는 이미지를 나타내는 하나 (또는 그 이상의) 출력(들)을 구비한다.
합성 노드와 입력 노드의 출력은 합성 또는 출력 노드의 임의의 개수의 입력에 연결될 수 있다. 입력은 단 하나의 출력에만 연결될 수 있다. 에지는 그래프에서 사이클을 형성하지 않는 경우에만 그리고 입력 채널의 개수가 출력의 개수와 동일한 경우에만 유효하다.
필터의 선택과 그래프에 의해 사용된 "문법(grammar)"의 정의는, 한편으로는, 생성 과정의 복잡성과 효율성을 결정하고, 다른 한편으로는, 기술 그 자체의 표현과, 그리하여 생산될 수 있는 결과의 다양성을 결정하는 본질적인 요소의 것이다.
필터는 4가지 주요 카테고리로 분류된다:
- "임펄스": "임펄스" 필터는 많은 텍스처 요소를 상이한 스케일로 그리고 사용자에 의해 직접 프로그래밍가능한 패턴으로 배열한다.
- "벡터": "벡터" 필터는 다각형 또는 곡선(아마도 채색된)과 같은 콤팩트한 벡터 표현에 기초하여 이미지를 생성한다.
- "래스터": "래스터" 필터는 픽셀에 직접 작용한다. 이 필터는 왜곡, 블러, 색상 변경, 이미지 변환(회전, 스케일링, ...)과 같은 동작을 수행한다.
- "동적": "동적" 필터는 일련의 과정이 이미지에 적용되어 그 변형을 초래할 수 있는 방식으로 (예를 들어, 그래픽 카드의 "프레임 버퍼"로부터) 벡터 또는 "비트맵" 형태로 호출 애플리케이션에 의해 형성된 이미지를 수신할 수 있다.
최소의 비용으로 무제한 가능한 사용을 제공하기 때문에 상보적인 유형의 필터를 모두 사용하는 능력이 특히 유리하다. 사용되는 필터의 리스트는 구현에 독립적이며, 특정 유형의 텍스처의 생산을 위해 전문화될 수 있다.
(이미 존재하거나 수리적으로 자체적으로 생성되는) 입력 이미지의 알고리즘 처리에 의해 생성되는 이미지에 대한 설명(description)을 나타내는 그래프를 편집하는 것은 그래픽 디자이너에게 반드시 간단한 일인 것은 아니다. 따라서, 텍스처 또는 다양한 텍스처를 형성하기 위하여 이러한 요소를 조립하고 파라미터화하는(parameterizing) 과정으로부터 기본 요소를 형성하는 과정을 구별하는 것이 필요하다.
추상화(abstraction)의 가장 낮은 레벨에서, 일반적인 처리 그룹을 설정하기 위하여 필터로부터 그래프를 구축하는 것이 가능하여야 한다. 필터를 조립하고 그 파라미터의 값을 변경하는 것은 사용자로 하여금 효과 또는 기본 패턴의 다양성을 생성하는 데 사용될 수 있는 재사용 가능한 블록을 형성할 수 있게 한다. 또한, 특정 파라미터의 값을 영구적으로 설정하는 것이 가능하여야 하거나, 또는 이를 "프로그래밍 가능한" 것으로 만들 수 있어야 한다. 프로그래밍 가능한 파라미터는 그 값이 표준 수리적 함수를 사용하여 사용자 프로그래밍된 함수에 의해 다른 파라미터로부터 생성되는 파라미터이다. 마지막으로, 이렇게 조립된 그래프를 랩핑하고 어느 파라미터가 최종 사용자에게 노출되어야 하는지를 결정하는 것이 가능하여야 한다.
중간 레벨에서, 사용자는 이전 단계에서 준비된 요소들을 상이한 층으로 조립하고 이에 따라 전체 물질을 구성(compose)해야 한다. 또한, 변동을 찾기 위하여 이렇게 한정된 물질의 어느 부분이 특정 효과 또는 파라미터에 의해 영향을 받아야 하는지를 지정하는 것이 마스크를 사용하여 가능해야 한다. 이전에 준비된 요소에 대한 파라미터는 단일 사용자 입력의 함수로서 단일 물질의 상이한 층을 변경하기 위해 관련될 수 있다. 주어진 텍스처에서, 결과 이미지가 주어진 주제 분야에서 변경될 수 있게 하는 것은 후자의 파라미터이다. 이후 파라미터는 벽돌벽 텍스처에 대해 일 방향 또는 다른 방향으로 벽돌의 개수와 같은 텍스처 분야와 관련된 중요성과 함께 디스플레이된다.
마지막으로, 추상화의 높은 레벨에서, 주어진 주제 영역을 식재(populate)하기 위하여 동일한 텍스처의 여러 다양성을 생성하는 것이 가능해야 한다. 또한 표색(colorimetric)과 같은 여러 후 처리 동작을 적용하는 것에 의해 최종 결과를 정제(refine)하는 것이 가능하다.
편집기는 결과 텍스처를 모두 포함하는 단 하나의 생성 그래프를 생성하는 것임을 주목하는 것이 중요하다. 후술되는 바와 같이, 이것은 자원 재사용을 극대화한다. 또한 편집기는 이들 여러 모드에서 동일한 데이터 세트(그래프 및 파라미터)를 조작하는 것임을 주목하는 것이 중요하다. 데이터가 디스플레이되는 여러 방식과 이 데이터의 상호작용과 변경 가능성은 현재 동작 모드에 의해 영향을 받는다.
그래프 텍스처는 동작의 순서(위상 순서)로 이를 탐색할 수 있는 이미지 생성기 엔진(도 6 참조)에 의해 직접 사용될 수 있다. 출력 이미지를 생성하는 노드에 도달될 때까지 각 노드는 후속 노드에 필요한 하나 이상의 이미지를 생성할 수 있다. 그러나, 이 접근법은 메모리 소비 측면에서 비효율적인 것으로 입증되었다. 사실, 여러 탐색 순서는 일반적으로 다수의 입력을 소비하는 노드의 계산에 앞서 저장될 중간 결과의 개수 때문에 일부 다른 것보다 더 많은 메모리를 사용하여 그래프를 통해 가능하다. 또한 그 진행에 대한 선험적 지식이 이용가능하다면 결과 이미지의 생성을 가속시키는 것이 가능하다. 그리하여, 렌더링 엔진은 준비되지 않은 표현보다 더 빠르게 소비할 수 있는 표현을 형성하기 위하여 편집 그래프를 준비하는 단계를 수행하는 것이 필요하다.
이 성분은 리스트 형태의 그래프의 재작성을 담당하며 그 탐색은 렌더링 엔진에 사소한 것이다. 이 리스트는 결과 이미지를 생성할 때 메모리 사용량을 최소화하기 위하여 정렬되어야 한다. 또한, 최적화 동작은 결과 이미지를 생성할 수 있는 가장 작은 표현을 렌더링 엔진에 제공하기 위하여 필요하다:
- 다른 파라미터의 세트의 값에 기초하여 특정 파라미터의 값을 설정하는 데 사용되는 함수를 최적화하는 동작;
- 준비 과정 동안 알려진 값을 가지는 파라미터의 값에 기초하여 비 연결된 또는 비활성 그래프 부분을 제거하는 동작;
- 그 결과의 관련성을 보존하고 구성가능한 임계 값에 따라 임의의 두드러진 에러를 도입하는 것을 피하기 위하여 필터 계산이 수행되어야 하는 정밀도를 식별하는 동작;
- 사용자에 디스플레이된 파라미터와 이러한 파라미터에 의해 영향을 받는 출력 이미지 사이의 종속성을 식별하고 지시하는 동작;
- 실제로 최종적으로 출력 이미지에 의해 사용되는 이미지 부분만을 생성하기 위하여 복합 노드에 의해 사용되는 입력 이미지의 영역을 식별하는 동작.
이 과정이 수행되었다면, 이미지의 생성은 각 노드에서 수행되는 유리한 처리와는 다른 계산을 요구하지 않는다. 복잡성은 이미지의 생성으로가 아니라 준비 과정으로 이동된다. 이것은 특히 이미지가 비디오 게임에서 텍스처로 사용되는 경우와 같이 시간과 메모리 사용량의 제약이 매우 높은 상황에서 이미지가 신속히 생성될 수 있게 한다.
제안된 발명은 결과 이미지를 생성하기 위하여 색상이나 광의 세기가 언급될 수 있는 픽셀 어레이의 형태가 아니라 수행되는 계산과 이 계산 과정에 영향을 미치는 파라미터의 정렬된 설명의 형태로 이미지를 저장한다. 이러한 설명은 사용되는 소스(잡음, 계산된 패턴, 이미 존재하는 이미지)와, 중간 이미지와 최종적으로 사용자에 의해 요구되는 출력 이미지를 형성하기 위하여 이들 소스를 결합하는 합성 계산을 설명하는 그래프로부터 유도된다. 대부분 종종, 렌더링 엔진이 만족해야 하는 제약은 결과 이미지를 생성하는 데 필요한 시간의 것이다. 사실, 호스트 애플리케이션이 재작업된 그래프의 형태로 설명된 이미지를 사용할 필요가 있는 경우, 이것은 가능한 한 빠르게 이 이미지를 가질 필요가 있다. 두 번째 기준은 생성 과정 동안 최대 메모리 소비량이다.
이것은 사용자 조작된 편집 그래프가 가능한 한, 두 개의 전술된 제약 사항을 충족하기 위하여 특정 성분에 의해 재작업되는 것이 전술되어 있다. 사실, 그 실행을 가속시키기 위하여 렌더링 엔진의 복잡성을 최소화하는 것이 필요하다. 선형화된 그래프 포맷으로 설명이 렌더링 엔진에 이용가능하게 이루어진 경우, 후자는 하나를 초과하는 입력을 소비하는 노드의 계산의 정확성을 보장하기 위해 성분 준비가 계산 리스트에 삽입된 시간적 결과의 저장과 연관된 제약 사항 내에서 그래프 준비 성분에 의해 지시된 순서로 계산을 수행한다.
이 렌더링 엔진은 자연적으로 사용자가 수행하는 조작의 시각적 렌더링을 사용자에게 제공해야 하는 편집 도구의 일부이지만, 또한 재작업된 설명 파일만을 사용하여 결과 이미지를 재생성할 수 있는 별도의 애플리케이션에 내장될 수도 있다.
본 발명에 따른 필터의 세트는 편집 및 저장의 용이성 및 생성 효율 사이의 정교한 트레이드오프로부터 초래된다. 제안된 발명의 하나의 가능한 구현은 아래에 설명되어 있다. "임펄스", "벡터" 및 "동적" 카테고리는 각각 매우 일반적인 필터, 즉 "FXMaps", "벡터 그래픽" 및 "동적 비트맵 입력" 필터를 각각 포함한다. "래스터" 카테고리만은 여러 개의 많은 전문화된 필터를 포함하며, 그 리스트는 균일한 색상(Uniform Color), 브렌드(Blend), HSL, 채널 셔플(Channels Shuffle), 그래디언트 맵(Gradient Map), 그레이 스케일 변환(Grayscale Conversion), 레벨, 엠보싱, 블러(Blur), 모션 블러(Motion Blur), 방향성 모션 블러, 워프(Warp), 방향성 워프, 샤펜(Sharpen), 2D 변환(Transportation)과 같다.
본 발명에 의해 제공되는 편집 도구는 3가지 상이한 관중(audience)을 위해 의도된 3개의 사용 레벨을 나타낸다:
- 기술적 편집 모드: 이 모드에서, 편집 도구는 그래프, 필터 및 그 파라미터를 직접 조작하는 것에 의해 재사용가능하고 구성가능한 일반적인 텍스처 그래프가 준비될 수 있게 한다. 필터 그룹이 원하는 처리를 달성하면, 편집기는 파라미터의 새로운 세트를 가지는 필터의 형태로 전체 그래프 또는 그 그래프의 서브세트가 제공될 수 있게 한다. 예를 들어, 이것은 균일한 물질 텍스처 또는 기본 패턴을 생성한다. 각 블록(원래의 필터 또는 필터 세트)에 대한 파라미터가 편집에 모두 이용가능하다. 재사용을 위한 서브그래프를 조립하는 동안, 특정 파라미터의 값을 설정하거나 또는 그 반대로 이를 사용자에게 노출하는 것이 가능하다. 생성된 파라미터의 재 노출은 도 2에 도시된다. 이 도 2에서, 파라미터(P1 내지 P4)에 의해 제어되는 필터(F1 내지 F5)를 포함하는 그래프는 감소되고 복합 필터(Fc)로 제공된다. 파라미터(P1, P2 및 P4)의 값들은 그 최종 값(색상, 부동 소숫점 및 정수)으로 설정되고, 파라미터(P3)는 사용자에게 재 노출된다.
- 텍스처 편집 모드: 이 모드에서, 편집 도구는 기술적 편집 모드에서 준비된 블록을 사용하여 최종 텍스처(결과 이미지)를 형성하고, 필터에 의해 이를 결합하는 것을 가능하게 한다. 이것은 비 전문가에 의해 용이하게 조작되는 하이 레벨 파라미터(벽의 벽돌의 크기, 페인트의 노화 계수, 등)를 준비한다. 이 모드에서 전문화된 사용자 인터페이스는 마스크가 간단히 그려질 수 있게 하며 최종 텍스처의 어느 부분이 주어진 물질로 구성될 수 있을지를 보여준다. 오버레이 스택 메커니즘은 또한 텍스처가 특정 유형의 처리 또는 특정 변동을 찾기 위하여 구성되어 있는 물질의 여러 층의 처리를 가능하게 한다. 두 개의 그래프-텍스처와 사용자 디자인된 마스크에 기초하여 마스킹 동작의 일례는 도 3에 제공된다. 이 예에서, 텍스처(T2)만이 파라미터(P)에 의해 영향을 받는다. 마스크(M)을 사용하여 텍스처(T1 및 T2)를 합성한 후 T2로부터 유도되는 결과(R)의 이 부분만이 파라미터(P)에 의해 영향을 받는다.
- 설정 및 백업 모드: 이 모드에서, 편집 도구는 높은 레벨의 파라미터가 그 환경 내에서 텍스처를 적용하기 위하여 조작될 수 있게 한다. 이것은 임의의 새로운 텍스처 설명을 형성하지는 않지만, 단순히 사용자에 맞는 변동을 생산하기 위해 그 파라미터를 변화시킨다. 이 모드에서 전문화된 편집기의 사용자 인터페이스는 극단적으로 단순화되어, 이에 따라 이전 모드에 의해 형성된 텍스처의 높은 레벨의 파라미터를 정밀 튜닝하게 하고, 일부 간단한 후 처리 동작{표색 설정, 선명도(sharpness), 등}에 의하여 텍스처를 완성할 수 있게 한다.
본 발명은 또한 생성 그래프를 변환하고 다수의 조작을 수행하여 렌더링 엔진에 의해 결과 이미지의 생성을 준비하고 촉진하고 가속시키는 새로운 성분인 최적화기를 도입한다:
- 그래프 선형화 조작: 편집 그래프는 이미지 생성 과정의 복잡성을 최소화하기 위하여 선형 리스트로 변환된다. 이 선형화 과정은 생성 과정과 연관된 메모리 제약을 고려하며, 랜덤하게 생성된 그래프의 여러 위상 분류의 비교에 기초한다. 이러한 위상 분류를 비교하는 데 사용되는 기준은 비교 알고리즘이 최소화하려고 시도하는 생성 동안의 최대 메모리 사용량이다. 이 그래프 선형화 과정의 일례는 도 4에 도시된다.
- 그래프의 비 연결된 또는 비활성 부분을 제거하는 조작. 노드는 편집 그래프에서 제시되지만, 그 출력은 그래프 변환 동안 고려되지 않은 그래프의 결과 이미지를 생성하는 브랜치(branch)에는 연결되지 않는다. 마찬가지로, 그래프의 출력 이미지에 기여하지 않는 중간 결과를 초래하는 그래프의 브랜치는 그래프 변환 동안 무시된다. 이 두 번째 상황은 두 개의 이미지 중 하나만을 드러내는 퇴화 마스크(degenerate mask)와 2개의 중간 이미지를 합성할 때(이에 의해 다른 것 뿐 아니라 이것에 이어지는 그래프의 브랜치가 무시될 수 있게 한다) 또는 예를 들어 제로 불투명도(zero opacity)와 같은 퇴화 파라미터로 표색 변환 동안 발생할 수 있다.
- 하나의 필터에 잠재적으로 콤팩트가능한 필터 연속물(filter successions)을 식별하는 조작. 따라서, 여러 각도로 순차적으로 수행되는 2개의 회전은 2개의 존재하는 회전의 각도의 합계와 같은 각도의 단일 회전으로 대체될 수 있다. 그래프의 이러한 식별 및 단순화는 생성 동안 계산될 필터의 수를 줄이고 따라서 생성 과정의 지속기간을 줄일 수 있다.
- 시각적으로 지각가능한 에러를 도입하지 않기 위해 또는 이러한 에러를 최소화하기 위하여 특정 노드들이 계산되어야 하는 정밀도를 평가하는 조작. 부동 소수점 숫자 대신에 정수로 계산될 수 있는 필터에서, 최적화기는 이 계산 방법에 의해 도입될 수 있는 에러를 평가하고, 어느 필터 변동이 선호되어야 하는지를 결정할 수 있다. 정수는 종종 부동 소수점 숫자보다 더 빠르게 처리되지만, 계산 결과에 정확도의 손실을 도입할 수 있다. 마찬가지로, "단일 정밀도" 부동 소수점 숫자와 "2배 정밀도" 부동 소수점 숫자가 있으며 이는 더 많은 메모리 공간을 차지하고 처리하는 것이 더 느리지만, 이는 더 높은 정밀도를 가지는 결과를 보장한다. 최적화기는 예를 들어 이 노드 또는 브랜치의 출력 이미지가 후속 계산에서 가질 수 있는 가중치의 함수로서 그래프의 노드 또는 브랜치에 대해 어느 정밀도를 채용할지를 결정할 수 있다. 이 가중치가 그래프를 준비할 때 최적화기에 의해 그 값이 알려진 파라미터에 따라 좌우되는 경우, 선택적으로 사용자에 의해 설정된 허용가능한 에러 임계 값에 따라 주어진 정밀도 쪽으로 계산을 가이드하는 것이 가능하다.
- 텍스처의 주제 분야에 연결된 "높은 레벨" 파라미터에 따라 특정 필터 파라미터를 관련시키기 위한 사용자 정의 산술 함수를 최적화하는 조작. 사용된 최적화는 예를 들어 다수의 하위 표현식에 공통인 코드의 인수 분해(factorization) 또는 상수(constants)의 전파와 관련되고, 제안된 발명의 현저한 특징은 아니다. 주목할 것은 사용자 정의 함수에 이 기술을 적용한 것이다.
- 사용자와 출력 이미지에 노출된 파라미터들 사이의 상호 의존성을 식별하는 조작. 파라미터의 다운스트림에 위치된 각 노드는 파라미터에 종속되는 것으로 표시된다. 출력 이미지에 대하여, 이미지의 외관에 잠재적으로 영향을 미치는 파라미터의 리스트와, 각 파라미터에 대하여, 영향을 받은 중간 이미지와 출력 이미지의 리스트가 이에 따라 획득된다. 이러한 파라미터가 변경될 때에는 가능한 한 신속하게 이미지를 재생성하기 위하여 사용자에게 노출된 파라미터의 값의 변경에 의하여 영향을 받고 출력 이미지에 의해 사용되는 모든 중간 이미지의 리스트가 독립적으로 저장된다. 이런 방식으로, 렌더링 엔진은 자체적으로 잠재적으로 값비싼 식별을 수행해야 할 필요가 없고, 이러한 목적을 위해 최적화기에 의해 준비된 리스트를 단순히 소비할 수 있어서, 호스트 애플리케이션에 의해 제공되는 새로운 값에 대응하는 새로운 결과 이미지를 생성하는데 드는 시간을 가속시킨다.
- 그 입력 이미지(들)의 일부만을 소비하는 노드에 의해 사용되는 중간 이미지의 하위 부분을 식별하고 전파하는 조작. 특정 노드는 입력 이미지의 하위 부분만을 사용한다. 그리하여 최종 결과를 변경함이 없이 이 하위 부분만을 생성하는 것이 가능하다. 사용된 영역을 결정하는 파라미터를 아는 것은 최적화기로 하여금 모든 노드의 이미지의 어느 서브 부분이 실제로 사용가능한지를 결정할 수 있게 한다. 이 정보는 각 노드에 대해 저장되고, 이는 파라미터에 의해 허용될 때, 이 하위 부분만의 계산을 가능하게 한다.
전술된 기능의 일부 또는 전부를 포함하여 최적화기 성분을 많이 구현하는 것이 가능하다.
최적화 과정의 출력은,
- 그래프 입력과 출력의 리스트와 설명;
- 동적 파라미터의 산술 표현식에 사용된 수치 값의 리스트와 설명;
- 합성 노드 리스트 및 그 각각에 대해:
- 사용된 원자 동작의 유형;
- 각 수치 파라미터의 값(생성 엔진에 의해 해석되는 사용자 정의 산술 표현식으로 표현되거나 알려진 값);
- 계산될 출력 이미지의 영역(들);
- 노드 결과에 영향을 미치는 사용자 파라미터의 리스트;
- 그래프 에지의 리스트;
- 합성 노드의 최적화 시퀀싱 (선형화된 그래프);
- 잠재적으로, 생성 과정을 가속시키는데 사용될 수 있는 다른 최적화 정보로 구성된다.
이 데이터는 콤팩트하고 생성시에 신속하게 판독될 수 있는 파일을 획득하기에 적합한 이진 포맷으로 저장된다.
렌더링 엔진은 최적화기로부터 초래되는 리스트에서 계산의 정렬된 실행을 담당한다. 최적화기에 의해 제공되는 리스트에 포함된 계산 노드는 편집 그래프의 노드에 대응하거나, 단일 노드로 감소된 편집 그래프에 있는 노드의 서브세트에 대응하거나, 또는 원래의 그래프에는 존재하지 않으나 일관적인 데이터 흐름(예를 들어, 컬러 이미지를 흑백 이미지로 변환하거나 또는 그 반대로 변환하는)을 보장하는데 필요한 "암시적인" 노드에 대응할 수 있다.
엔진은 정적으로 전술된 문법의 각 필터에 대해 실행될 프로그램을 포함하며, 리스트에 삽입된 각 계산에 대해, 엔진은,
- 값들이 고정될 때 해당 계산에 사용된 파라미터를 판독하고;
- 비 고정된 파라미터의 값을 계산하기 위해 사용자 함수를 평가하고;
- 현재 노드의 계산에 소비되는 중간 결과의 메모리 위치를 복구하고;
- 현재 노드의 계산을 수행하고;
- 메모리에 결과 이미지를 저장할 수 있다.
주어진 결과 이미지에 대해 리스트의 종단에 도달된 경우 렌더링 엔진은 이를 사용할 수 있는 호스트 애플리케이션에 해당 이미지를 전달할 수 있다.
렌더링 성분의 복잡성은 높은 알고리즘 복잡성의 처리를 구현하는 최대 가능한 개수의 단계를 업스트림에서 로딩하는 최적화기의 존재에 의해 크게 감소된다: 그래프의 선형화, 비활성 서브 그래프의 검출, 사용자 함수의 최적화...
제안된 발명의 여러 성분에 의해 구현된 전체 방법은 도 1a 및 도 1b에 도시된다. 여러 단계는 다음과 같다:
I. 재사용가능한 블록으로 필터를 조립하고 필터 파라미터를 설정/프로그래밍하는 단계;
II. 재사용가능한 블록에 의해 텍스처를 구성하고/노출된 파라미터의 값을 조절하며/마스크 드로잉 및 적용된 효과를 "영역화(regionalizing)"하는 단계;
III. 마지막으로 노출된 파라미터를 설정하고/사용된 값의 그룹을 저장하는 단계;
IV. 최적화기에 의해 재작업된 그래프를 출력하고/설명 파일을 저장하는 단계;
V. 렌더링 엔진으로 결과 이미지를 생성하는 단계.
편집 도구에서, 원하는 그래픽 렌더링을 획득하기 위하여 단계 I 내지 III의 많은 반복을 수행하는 것이 일반적이다. 또한, 단계 IV 및 V은 수행되는 변경 사항의 영향에 대해 시각적인 렌더링을 제공하기 위하여 각 사용자 조작시에 실행된다.
단계 IV는 편집 도구 및 임의의 호스트 애플리케이션이 서로 분리될 수 있는 지점이다. 편집 그래프에 기초하여 최적화기에 의해 형성된 설명 파일은 편집 도구의 사용자에 의해 설계된 이미지를 재형성하기 위하여 호스트 애플리케이션에 필요한 유일한 데이터이다.
제안된 발명의 편집 도구는 버스를 통해 메모리에 연결된 마이크로프로세서(CPU)를 포함하는 주어진 장치에서 구현된다. 이 장치의 구현의 일례는 도 5에 도시된다.
메모리는 다음 영역을 포함한다:
- 여러 상호작용 모드에 대한 설명을 저장하는 메모리(L0). 이 메모리는 각 사용 모드에 대한 인증된 상호 작용의 리스트뿐 아니라 여러 상호작용 모드들 사이의 가능한 전이 리스트를 포함한다;
- 각 상호작용 모드에 대한 데이터 디스플레이 설명을 저장하는 메모리(L1). 예를 들어, 이 메모리는 전술된 중간 디스플레이 모드에 대한 여러 오버레이 및 여러 층을 디스플레이하는데 사용된 설명, 또는 최저 레벨의 디스플레이 모드에 대한 그래프의 설명을 포함한다;
- 모든 그래프 데이터를 전부 저장하는 메모리(D): 노드와 에지, 각 노드에 대한 동작 유형, 특정 파라미터에 대한 피드백 제어에 대한 사용자 정의 함수, 입력 이미지와 출력 이미지의 리스트...
다음 여러 모듈이 마이크로프로세서에 의해 호스팅된다:
- 현재 동작 모드와, L0에 나열된 가능한 전이에 따라, 하나의 편집 모드로부터 다른 편집 모드로 전이를 트리거하는 상호작용 관리자(G0)의 모드;
- 그래프의 임의의 요소에 대해 사용자에 의해 만들어진 변경을 메모리에 저장된 그래프 데이터(D)에 반영하는 그래프 데이터 관리자(G1): 그래프 위상(노드와 에지), 사용자 함수, 노드 파라미터... 그래프 데이터에 이루어진 변경은 현재 상호작용 모드에 따라 좌우된다;
- 현재 상호작용 모드와, 이 현재 상호작용 모드에 사용될 L1에 포함된 디스플레이 파라미터에 따라, 데이터(D)에 기초하여 편집되는 그래프의 표현을 구축하는 데이터 디스플레이 관리자(G2);
- 현재 편집 모드와, L0에 포함된 허용된 상호작용의 리스트에 따라, 사용자에 의해 이루어진 변경을 허용하거나 허용하지 않는 상호작용 관리자(G3).
이 장치는 사용자가 가능한 상호작용의 세트를 각각 노출시키는 여러 모드에 있는 동일한 데이터 세트를 편집할 수 있게 함으로써, 전술된 다중 모드 편집 기능을 제공한다. 도 6은 여러 상호작용 모드들이 관리될 수 있는 하나의 접근법에 포함된 단계들의 일부를 도시한다.
제안된 발명의 그래프 준비 도구(최적화기)는 버스를 통해 메모리에 연결된 마이크로프로세서(CPU)를 포함하는 장치에서 구현된다. 이 장치는 도 7에 도시된다.
RAM은 다음 영역을 포함한다:
- 사용자에 의해 한번 처리된 그래프 정보를 모두 포함하는 영역(D);
- 그래프의 노드와 에지;
- 각 노드의 파라미터;
- 다른 파라미터의 값으로부터 특정 노드 파라미터의 값을 계산하는 데 사용되는 사용자 정의 함수;
- 주석 노드의 정렬된 리스트로 변환된 그래프의 설명을 수신하는 영역(S).
다음 여러 모듈은 마이크로프로세서에 의해 호스팅된다:
- 그래프 선형화 모듈;
- 사용자 함수 최적화 모듈;
- 비 연결된 또는 비활성 서브 그래프를 제거하기 위한 모듈;
- 각 노드에 대해 계산되는 하위 영역을 식별하기 위한 모듈;
- 파라미터 효과 추적 모듈;
- 각 필터가 계산될 수 있는 정밀도를 평가하기 위한 모듈;
- 필터 시퀀스를 식별하고 감소시키기 위한 모듈.
편집 도구에 의해 공급되는 그래프를 최적화할 때, 여러 최적화기 모듈의 전부 또는 일부가 메모리(D)에 포함된 그래프 데이터를 처리하도록 기능한다. 선형화된 순차 그래프 형태의 표현식은 메모리(S)에 저장되어 있어, 이것은 호스트 애플리케이션에 의해 즉시 사용되거나 파일로 저장될 수 있다.
제안된 구현의 렌더링 엔진은 버스를 통해 메모리에 연결된 마이크로프로세서(CPU)를 포함하는 장치에서 구현된다. 이 장치는 도 8에 도시된다.
RAM는 다음 영역을 포함한다:
- 최적화기에 의해 공급되는 리스트(선형화된 그래프)를 저장 영역(L0). 이 리스트는 최적화기 및 렌더링 엔진이 동일한 애플리케이션(예를 들어, 편집 도구의 경우) 내에 포함되는 경우에 최적화기에 의해 직접 획득되거나 또는 호스트 애플리케이션에 내장되고 (일반적으로 그래픽 환경에서) 사용 전에 결과 이미지의 재생성을 위해 엔진에 할당된 자원 파일로부터 직접 획득될 수 있다;
- L0에 포함된 계산에 따라 정렬되고, 각 계산에 사용될 파라미터 값을 포함하는 영역(L1). 산술 표현식의 형태로 설명된 파라미터에 대해, 평가될 표현식은 또한 이러한 리스트에 저장된다;
- 리스트를 탐색할 때 계산되는 중간 결과를 저장하는 영역(M). 이 메모리는 하나를 초과하는 입력을 소비하는 필터를 계산할 때 유지될 중간 결과를 저장하는 데 특히 사용된다. 출력 이미지는 또한 호스트 애플리케이션에 이용가능하게 만들어지기 전에 이 메모리에 저장된다.
마이크로프로세서는 다음 모듈을 호스팅한다:
- L0에 포함된 리스트를 탐색하고, L1으로부터 연관된 파라미터를 판독하는 리스트 탐색 모듈(M0);
- 각 필터의 각 파라미터에 대해 올바른 값을 사용하고 리스트(L0)에 포함된 필터의 코드를 실행하는 것을 담당하는 모듈(M1);
- 준비 과정의 결과로서 리스트에 이미 있는 고정된 값을 파라미터가 가지지 않는 경우 구현되는 사용자 함수를 평가하기 위한 모듈(M2). 이것은 각 필터의 실행 동안 사용되는 파라미터의 값을 생성하기 위하여 사용자 정의 산술 표현식을 판독하고 이 함수를 평가하는 것을 수행하는 모듈이다;
- 주어진 필터에 대해 실행되는 코드를 각각 포함하는 모듈 리스트(MF1 내지 MFn). 모듈(M1)이 리스트(L0)에서 특정 위치에 대응하는 실행되는 필터를 식별하는 것은 모듈의 이 리스트이다.
도 9는 편집 그래프에 기초하여 최적화기에 의해 생성된 리스트의 렌더링 엔진에 의해 탐색되는 주요 단계를 도시한다.
본 발명의 제안된 구현은 다수의 필터를 각각 포함하는 다수의 필터 카테고리를 사용한다. 이렇게 구성된 문법은 구현에 특정되며, 재작업된 그래프에 기초하여 이미지를 생성하는 과정의 복잡성과 상기 문법의 표현 사이의 만족스러운 트레이드오프를 달성하기 위하여 한정된다. 제공되는 구현에서 사용되는 필터의 선택으로부터 유도되거나 또는 이와는 완전히 분리된 상이한 카테고리와 필터의 다른 선택을 가지는 상이한 배열을 고려하는 것이 가능하다. 잠재적인 문법은 렌더링 엔진에 의하여 알려져야 하며, 이는 사용되는 각 필터와 연관된 계산을 수행하거나 또는 사용된 문법에 존재하는 필터를 결과 이미지의 정확성을 위해 필터 또는 균등한 필터의 연속물로 변환할 수 있어야 한다.
본 발명의 제안된 구현에서, 그래프 형성 및 편집 도구는 3개의 동작 모드를 노출시켜서 이에 따라 3개의 상이한 유형의 사용자에 의해 사용되도록 의도된 상이한 레벨의 복잡성을 노출시킨다. 상이한 개수의 편집 도구를 사용하는 방식을 구상하고, 이에 따라 상이한 방식으로 도구 사용자 기반을 분할하는 것이 가능하다.
전술된 여러 모듈(예를 들어, 선형화, 추적, 리스트 탐색, 필터 실행, 파라미터 평가 모듈, 등)을 구현하는 것은 유리하게는 모듈들로 하여금 특정 모듈에 구체적으로 의도된 동작(들)을 수행할 수 있게 하는 구현 명령에 의하여 수행된다. 명령은 하나 이상의 마이크로프로세서에 의해 구현된 소프트웨어 또는 소프트웨어 모듈 중 하나 이상의 부분의 형태일 수 있다. 모듈 및/또는 소프트웨어는 유리하게는 애플리케이션 소프트웨어가 마이크로프로세서를 구비하는 컴퓨터 또는 다른 장치 상에서 실행될 수 있게 하는, 컴퓨터에 의해 사용가능한 기록 매체에 구현된 컴퓨터 판독가능한 프로그램 코드를 구비하는, 컴퓨터에 의해 사용가능한 기록 매체를 포함하는 컴퓨터 프로그램 제품에 제공된다.

Claims (11)

  1. 하나 이상의 마이크로프로세서, 명령 리스트를 저장한 메모리를 포함하는 절차 텍스처를 편집 및 생성하기 위한 시스템으로서, 상기 명령 리스트는 연산 동작을 수행하게 하고, 하나 이상의 입력 이미지에 연산 동작을 적용하여 하나 이상의 출력 이미지를 생성하는 그래프의 각 노드에서 그래프 데이터로부터 결과 이미지를 생성하기 위하여, 절차 포맷의 절차 텍스처가, 수행될 계산의 정렬된 설명의 형태 및 상기 계산 과정에 영향을 미치는 파라미터의 형태로 편집되게 하고, 편집된 절차 데이터에 기초하여 래스터 포맷의 텍스처를 생성하는, 상기 시스템은,
    - 절차 포맷의 텍스처를 형성하거나 변경하기 위한 사용자 인터페이스를 제공하고 생성할 텍스처의 렌더링에 대한 최적화기를 포함하는 편집 도구;
    - 최적화기에 의해 생성된 최적화된 절차 포맷의 상기 그래프 데이터에 기초하여 래스터 텍스처를 생성하고, 파라미터 리스트 탐색 모듈(M0), 필터 실행 모듈(M1), 그래프 파라미터 평가 모듈(M2), 및 필터 각각에 대해 실행될 데이터를 구비하는 필터 모듈을 포함하는 렌더링 엔진;을 더 포함하고,
    상기 최적화기는 리스트의 형태로 그래프의 재작성을 하도록 구성되고, 상기 리스트는 상기 결과 이미지를 생성할 때 메모리 사용량을 최소화하도록 정렬되고,
    상기 최적화기의 RAM은,
    - 사용자에 의해 한번 처리된 그래프 정보를 모두 포함하는 영역(D);
    - 그래프의 노드와 에지;
    - 각 노드의 파라미터;
    - 다른 파라미터의 값으로부터 특정 노드 파라미터의 값을 계산하는 데 사용되는 사용자 정의 함수;
    - 주석 노드의 정렬된 리스트로 변환된 그래프의 설명을 수신하는 영역(S);을 포함하고,
    상기 최적화기는,
    - 그래프 선형화 모듈;
    - 사용자 함수 최적화 모듈;
    - 비 연결된 또는 비활성 서브 그래프를 제거하기 위한 모듈;
    - 각 노드에 대해 계산되는 하위 영역을 식별하기 위한 모듈;
    - 파라미터 효과 추적 모듈;
    - 각 필터가 계산될 수 있는 정밀도를 평가하기 위한 모듈;
    - 필터 시퀀스를 식별하고 필터의 수를 감소시키기 위한 모듈;을 더 포함하는 것을 특징으로 하는 편집 및 생성 시스템.
  2. 제1항에 있어서,
    상기 필터는,
    - "임펄스": "임펄스" 필터는 텍스처 요소를 상이한 스케일로 그리고 사용자에 의해 직접 프로그래밍가능한 패턴으로 배열하는 필터;
    - "벡터": "벡터" 필터는 채색된 다각형 또는 곡선을 포함하는 콤팩트한 벡터 표현에 기초하여 이미지를 생성하는 필터;
    - "래스터": "래스터" 필터는 픽셀에 직접 작용하는 필터;
    - "동적": "동적" 필터는 일련의 과정이 이미지에 적용되어 변형을 초래할 수 있는 방식으로, 벡터 또는 "비트맵" 형태로 호출 애플리케이션에 의해 형성된 이미지를 수신할 수 있는 필터;의 카테고리 중에서 적어도 하나의 필터를 포함하는 편집 및 생성 시스템.
  3. 제1항 또는 제2항에 따른 편집 및 생성 시스템에 사용되는 절차 포맷의 텍스처를 최적화하는 장치로서, 상기 최적화기를 포함하는 장치.
  4. 제1항 또는 제2항에 따른 편집 및 생성 시스템을 위한, 절차 포맷의 텍스처 또는 이미지를 렌더링하는 렌더링 엔진으로서, 적어도 하나의 마이크로프로세서 및 명령 리스트를 저장한 메모리를 포함하고,
    - 수행될 처리 리스트를 탐색하는 리스트 탐색 모듈;
    - 필터 실행 모듈;
    - 파라미터 평가 모듈; 및
    - 필터 각각에 대해 실행될 데이터를 구비하는 필터 모듈;을 더 포함하는 것을 특징으로 하는 렌더링 엔진.
  5. 제4항에 있어서,
    하나 이상의 이미지 생성 단계를 포함하는 애플리케이션을 통합하고, 상기 이미지 생성 단계는 최적화된 절차 포맷의 그래프 데이터에 기초하여 수행되는 것을 특징으로 하는 렌더링 엔진.
  6. 제1항 또는 제2항에 따른 편집 및 생성 시스템을 위한 텍스처 편집 및 생성 방법으로서,
    I. 재사용가능한 블록으로 필터를 조립하고 필터 파라미터를 설정 및 프로그래밍하는 단계;
    II. 재사용가능한 블록에 의해 텍스처를 구성하고, 노출된 파라미터의 값을 조절하며, 마스크 드로잉 및 적용된 효과를 "영역화(regionalizing)"하는 단계;
    III. 마지막으로 노출된 파라미터를 설정하고, 사용된 값의 그룹을 저장하는 단계;
    IV. 최적화기에 의해 재작업된 그래프를 출력하고, 설명 파일을 저장하는 단계;
    V. 렌더링 엔진으로 결과 이미지를 생성하는 단계;를 포함하는 것을 특징으로 하는 텍스처 편집 및 생성 방법.
  7. 제6항에 있어서,
    다른 파라미터의 세트의 값에 기초하여 특정 파라미터의 값을 설정하는 데 사용되는 함수를 최적화하는 단계;
    - 준비 과정 동안 알려진 값을 가지는 파라미터의 값에 기초하여 비 연결된 또는 비활성 그래프 부분을 제거하는 단계;
    - 필터 계산의 결과의 관련성을 보존하고, 설정 가능한 임계 값에 따라서 임의의 에러를 도입하는 것을 피하기 위하여 필터 계산이 수행되어야 하는 정밀도를 식별하는 단계;
    - 사용자에 디스플레이된 파라미터와 이러한 파라미터에 의해 영향을 받는 출력 이미지 사이의 종속성을 식별하고 지시하는 단계;
    - 실제로 최종적으로 출력 이미지에 의해 사용되는 이미지 부분만을 생성하기 위하여 복합 노드에 의해 사용되는 입력 이미지의 영역을 식별하는 단계;를 더 포함하는 텍스처 편집 및 생성 방법.
  8. 제4항에 따른 렌더링 엔진을 위한 절차 텍스처 생성 방법으로서,
    렌더링 장치에 포함된 각 필터에 대해,
    - 최적화된 절차 포맷의 그래프 데이터의 리스트를 탐색하는 단계;
    - 절차 최적화된 포맷의 상기 그래프 데이터로부터, 고정된 파라미터 값에 대해 수행된 계산에 사용된 파라미터를 판독하는 단계;
    - 비 고정된 파라미터의 값을 계산하기 위해 사용자 함수를 평가하는 단계;
    - 처리 중인 노드의 계산에 소비될 중간 결과의 메모리 위치를 복구하는 단계;
    - 계산된 래스터 데이터를 결정하기 위해 최적화된 절차 포맷의 그래프에 대해 현재 데이터의 계산을 수행하는 단계;
    - 계산된 이미지를 메모리에 저장하는 단계; 및
    - 포함된 필터들 모두가 처리되었을 때, 생성된 래스터 텍스처를 호스트 애플리케이션에 이용가능하게 하는 단계;를 포함하는 것을 특징으로 하는 절차 텍스처 생성 방법.
  9. 삭제
  10. 삭제
  11. 삭제
KR1020137005330A 2010-07-30 2011-07-29 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법 KR101893034B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
FR1003204 2010-07-30
FR1003204 2010-07-30
US36981010P 2010-08-02 2010-08-02
US61/369,810 2010-08-02
PCT/IB2011/001753 WO2012014057A2 (fr) 2010-07-30 2011-07-29 Systeme et procede d'edition, d'optimisation et de rendu de textures procedurales

Publications (2)

Publication Number Publication Date
KR20130092573A KR20130092573A (ko) 2013-08-20
KR101893034B1 true KR101893034B1 (ko) 2018-10-04

Family

ID=44681391

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137005330A KR101893034B1 (ko) 2010-07-30 2011-07-29 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US20130187940A1 (ko)
EP (1) EP2599057B1 (ko)
KR (1) KR101893034B1 (ko)
CA (1) CA2806802C (ko)
WO (1) WO2012014057A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130063472A1 (en) * 2011-09-08 2013-03-14 Microsoft Corporation Customized image filters
US9378579B1 (en) 2012-06-27 2016-06-28 Pixar Creation of cloth surfaces over subdivision meshes from curves
US11410777B2 (en) * 2012-11-02 2022-08-09 The University Of Chicago Patient risk evaluation
US9811936B2 (en) * 2013-03-15 2017-11-07 Dreamworks Animation L.L.C. Level-based data sharing for digital content production
FR3008815B1 (fr) 2013-07-18 2017-02-24 Allegorithmic Systeme et procede de generation de textures procedurales sur un objet
FR3008814B1 (fr) 2013-07-18 2016-12-23 Allegorithmic Systeme et procede de generation de textures procedurales a l'aide de particules
US9654602B2 (en) * 2014-01-22 2017-05-16 Zebrafish Labs, Inc. User interface for just-in-time image processing
US9821227B2 (en) * 2014-08-13 2017-11-21 King.Com Ltd. Composing an image
FR3024916B1 (fr) 2014-08-14 2017-11-24 Allegorithmic Systeme et procede de parametrage colorimetrique et geometrique de textures procedurales sur un objet
FR3082649B1 (fr) * 2018-06-19 2020-06-05 Allegorithmic Procede d'application de couleurs sur une texture
FR3092415B1 (fr) 2019-01-31 2021-03-05 Valeo Comfort & Driving Assistance Procédé de génération d’un retour sensitif pour une interface et interface associée

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000123149A (ja) * 1998-10-13 2000-04-28 Sony Corp 画像生成方法及び装置
WO2007002845A2 (en) 2005-06-29 2007-01-04 Microsoft Corporation Procedural graphics architectures and techniques
US20070002068A1 (en) 2005-06-29 2007-01-04 Microsoft Corporation Adaptive sampling for procedural graphics

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000123149A (ja) * 1998-10-13 2000-04-28 Sony Corp 画像生成方法及び装置
WO2007002845A2 (en) 2005-06-29 2007-01-04 Microsoft Corporation Procedural graphics architectures and techniques
US20070002068A1 (en) 2005-06-29 2007-01-04 Microsoft Corporation Adaptive sampling for procedural graphics

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A low-power 3D rendering engine with two texture units and 29-Mb embedded DRAM for 3G multimedia terminals, IEEE Journal of Solid-State Circuits 39.7 (2004)*
Substance: Unleashing online gaming with descriptive textures, Allegorithmic, White Paper(2009)*

Also Published As

Publication number Publication date
WO2012014057A3 (fr) 2012-03-29
CA2806802A1 (en) 2012-02-02
WO2012014057A2 (fr) 2012-02-02
EP2599057B1 (fr) 2017-05-31
CA2806802C (en) 2020-03-24
EP2599057A2 (fr) 2013-06-05
US20130187940A1 (en) 2013-07-25
KR20130092573A (ko) 2013-08-20

Similar Documents

Publication Publication Date Title
KR101893034B1 (ko) 절차 텍스처를 편집, 최적화 및 렌더링하는 시스템 및 방법
Han et al. Multiscale texture synthesis
Frühstück et al. Tilegan: synthesis of large-scale non-homogeneous textures
Orzan et al. Diffusion curves: a vector representation for smooth-shaded images
CN1942896B (zh) 用图形处理单元处理图形操作的系统和方法
Baert et al. Out-of-core construction of sparse voxel octrees
WO2015158870A1 (en) Three dimensional modeling
US20050140672A1 (en) Shader editor and compiler
US10733793B2 (en) Indexed value blending for use in image rendering
CN104167015A (zh) 一种基于表面信号拟合的着色器简化方法、装置及图形渲染方法
Semmo et al. Interactive image filtering with multiple levels-of-control on mobile devices
CN111524231A (zh) 一种虚拟地形的处理方法及装置、电子设备、存储介质
CN111158840A (zh) 图像轮播方法及装置
Cartwright et al. Web-based shape modeling with HyperFun
US11625900B2 (en) Broker for instancing
Koleśnik et al. Fuzzy calculator–useful tool for programming with fuzzy algebra
Montesdeoca et al. Mnpr: A framework for real-time expressive non-photorealistic rendering of 3d computer graphics
CN103597467B (zh) 网格序列文件格式
KR101268865B1 (ko) 3d 가상현실 저작도구의 실시간 재질 생성을 위한 편집 방법
US9569875B1 (en) Ordered list management
Salehi ImageMagick Tricks Web Image Effects from the Command Line and PHP
Meysenburg Introduction to Programming Using Processing
Rudolph A Framework for example-based Synthesis of Materials for Physically Based Rendering
Stahlhut Extending natural textures with multi-scale synthesis
Zábský Optimizing scriptable generator of terrain maps

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant