맨위로가기

Cg (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Cg는 3D 그래픽 프로그래밍을 단순화하기 위해 개발된 GPU용 고급 언어이다. 어셈블리 언어의 단점을 보완하여 이식성, 가독성, 최적화된 코드 생성을 제공하며, OpenGL과 Direct3D API를 모두 지원한다. NVIDIA의 CUDA 등 후속 GPU 개발 환경에도 영향을 미쳤다. Cg는 다양한 데이터 타입, 연산자, 제어 구조, 표준 라이브러리, 전처리기를 제공하며, 셰이더 프로파일에 따라 다양한 GPU에서 실행될 수 있다. CgFX는 셰이더 프로그램 조합과 입출력을 관리하는 이펙트 프레임워크이다. Cg는 2012년 개발이 중단되었으며, NVIDIA는 후속 기술로 nvFX를 개발했다. Cg는 다양한 애플리케이션과 게임에서 활용되었으며, 현재는 더 이상 새로운 하드웨어 기능을 지원하지 않는다.

더 읽어볼만한 페이지

  • 셰이더 언어 - GLSL
    GLSL은 OpenGL에서 GPU를 프로그래밍하기 위한 셰이딩 언어이며, 렌더링 파이프라인을 제어하고, C 언어와 유사한 문법으로 셰이더 단계와 데이터 형식을 지원하며, 실시간 3D 그래픽 구현에 기여한다.
  • 셰이더 언어 - 고급 셰이더 언어
    고급 셰이더 언어(HLSL)는 마이크로소프트에서 개발한 셰이딩 언어로, Direct3D API와 함께 GPU에서 실행되는 셰이더 프로그램을 작성하는 데 사용되며, C/C++와 유사한 구문을 가지고 다양한 셰이더 모델을 지원하여 3차원 그래픽 렌더링을 커스터마이즈하고 실시간 레이 트레이싱과 같은 최신 그래픽 기술을 구현하는 데 중요한 역할을 한다.
  • 엔비디아 소프트웨어 - 엔비디아 RTX
    엔비디아 RTX는 레이 트레이싱, AI 통합, CUDA를 포함한 엔비디아의 기술로, 지포스 RTX 및 RTX 시리즈 GPU에서 텐서 코어를 활용하여 DLSS와 같은 AI 기반 기술로 이미지 품질을 향상시키고 현실감 있는 그래픽을 구현하는 데 기여한다.
  • 엔비디아 소프트웨어 - CUDA
    CUDA는 엔비디아에서 개발한 GPU 기반 병렬 컴퓨팅 플랫폼으로, 연산 집약적인 작업을 가속화하며 다양한 프로그래밍 언어를 지원하고 3D 그래픽, 동영상 변환 등 여러 분야에 활용된다.
  • C 프로그래밍 언어 계열 - C (프로그래밍 언어)
    C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다.
  • C 프로그래밍 언어 계열 -
    펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
Cg (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
개요
종류셰이딩 언어
개발NVIDIA, Microsoft
영향을 받은 언어C, RenderMan Shading Language
영향을 준 언어GLSL
방언Cg, HLSL, Playstation Shading Language

2. 역사적 배경

그래픽 하드웨어의 기술적 발전으로 3D 그래픽 프로그래밍의 일부 영역이 매우 복잡해졌다. 이러한 과정을 단순화하기 위해 그래픽 카드에는 정점 및 픽셀 셰이더를 사용하여 렌더링 파이프라인을 수정하는 기능을 포함한 새로운 기능이 추가되었다.

처음에는 정점 및 픽셀 셰이더가 그래픽 처리 장치(GPU)의 어셈블리 언어만을 사용하여 매우 낮은 수준에서 프로그래밍되었다. 어셈블리 언어를 사용하면 프로그래머가 코드와 유연성을 완벽하게 제어할 수 있었지만 사용하기가 다소 어려웠다. GPU 프로그래밍을 위한 이식 가능한 고급 언어가 필요했기 때문에, 이러한 문제를 극복하고 셰이더 개발을 더 쉽게 만들기 위해 Cg가 개발되었다.[30]

어셈블리보다 Cg를 사용하는 것의 몇 가지 이점은 다음과 같다.


  • 고급 코드는 어셈블리 코드보다 배우기, 프로그래밍, 읽기 및 유지 관리가 더 쉽다.
  • Cg 코드는 하드웨어 및 플랫폼에 따라 달라지는 어셈블리 코드와 달리 광범위한 하드웨어 및 플랫폼에 이식 가능하다.
  • Cg 컴파일러는 코드를 최적화하고 어셈블리에서 수행하기 어렵고 오류가 발생하기 쉬운 낮은 수준의 작업을 자동으로 수행할 수 있다.


GPU의 기술적인 발전에 따라 애플리케이션 소프트웨어 프로그래머가 음영 계산 처리(셰이딩)를 프로그래밍할 수 있는 하드웨어가 개발, 제공되었다. 그러나 Direct3D 8.x나 OpenGL ARB 확장 기능에서의 초기 GPU 프로그래밍은 저수준 언어(어셈블리 언어)를 기반으로 하였고, API의 구현이 제공하는 런타임 라이브러리장치 드라이버에 포함된 어셈블러가 해석 가능한 니모닉을 이용하여 프로그램을 작성해야 했기 때문에, 개발이 어렵고 생산성이나 이식성도 낮았다. 따라서 GPU를 위한 고수준 언어가 필요하게 되어 Cg가 개발되었다.

유사한 GPU용 고수준 언어로 OpenGL 네이티브의 GLSL(2003년 OpenGL 1.5의 확장 기능으로 출시) 및 DirectX(Direct3D) 네이티브의 HLSL(2002년 말 DirectX 9.0의 표준 기능으로 출시)가 존재하지만, Cg는 (마이크로소프트와 NVIDIA가 공동 개발한) HLSL과 더 유사한 문법을 가지고 있다.

GLSL은 OpenGL 전용이며, HLSL은 Direct3D 전용이지만, Cg 언어 및 Cg 런타임 라이브러리는 두 API를 모두 지원한다는 특징을 가지고 있다. 즉, OpenGL 및 Direct3D를 모두 Cg 셰이더 프로그램을 실행하는 기반으로 사용할 수 있다.

NVIDIA의 GPGPU 개발·실행 환경인 CUDA용으로 확장된 C/C++에서는 Cg와 매우 유사한 데이터 형식이나 내장 함수가 구현되어 있는 등, Cg는 후발 언어에도 영향을 미치고 있다.

3. 언어 특징

Cg는 C와 유사한 문법 구조를 가진 프로그래밍 언어이다. 주요 특징은 다음과 같다.


  • 데이터 타입: Cg는 `float`(32비트 부동 소수점), `half`(16비트 부동 소수점), `int`(32비트 정수), `fixed`(12비트 고정 소수점), `bool`(부울 변수), `sampler*`(텍스처 객체)와 같은 기본 데이터 타입을 제공한다.[31] 또한, `float3`, `float4x4`와 같이 기본 데이터 타입을 기반으로 하는 벡터 및 행렬 데이터 타입을 제공하여 3D 그래픽스 프로그래밍에 유용하다.[31] Cg는 구조체와 배열 자료형도 지원하며, 포인터를 지원하지 않는 대신 배열은 제1급 객체이다.[31]
  • 연산자: C 언어의 산술 연산자와 논리 연산자를 지원하며, 벡터 및 행렬 자료형에도 적용 가능하여 가독성이 높고 직관적인 그래픽스 프로그램 작성을 돕는다.[1]
  • 함수 및 제어 구조: C와 기본적인 제어 구조 (`if/else`, `while`, `for` 등)를 공유하며, 함수 정의 방식도 유사하다. 함수 파라미터는 기본적으로 값 전달이며, `in`, `out`, `inout`, `uniform` 한정자를 지정할 수 있다.
  • 표준 라이브러리: Cg/HLSL은 GPU 프로그래밍에 필요한 다양한 함수들을 제공한다. `abs`, `sin`과 같이 C에서 대응되는 함수도 있고, `tex1D`, `tex2D`와 같이 GPU 프로그래밍 작업에 특화된 함수도 있다.[32]
  • 전처리기: C 전처리기의 많은 지시어를 구현하며 매크로 확장 시스템을 갖추고 있다. `#include`를 지원한다.[7]

3. 1. 데이터 타입

Cg는 다음과 같은 기본 데이터 타입을 제공한다.

  • float - 32비트 부동 소수점 숫자
  • half - 16비트 부동 소수점 숫자
  • int - 32비트 정수
  • fixed - 12비트 고정 소수점 숫자
  • bool - 부울 변수
  • sampler* - 텍스처 객체를 나타냄


Cg는 `float3` 및 `float4x4`와 같이 기본 데이터 타입을 기반으로 하는 벡터 및 행렬 데이터 타입을 제공한다. 이러한 데이터 타입은 3D 그래픽스 프로그래밍을 다룰 때 매우 일반적이다. Cg는 또한 C와 유사하게 작동하는 구조체와 배열 자료형을 가지고 있다.[31]

Cg는 배열 (고정 길이 배열) 및 구조체도 지원한다. 포인터를 지원하지 않는 대신, 배열은 제1급 객체이다.[31] 또한 배열에 `packed`형 한정자를 지정하여 packed array형을 정의할 수 있다.[31] 기본 수치형과 관련하여, 예를 들어 `float4`나 `float4x4`와 같이 4차원까지의 벡터형과 4×4차원까지의 행렬형의 별칭이 미리 정의되어 있다. 이들은 벡터행렬 그 자체를 다루는 형으로서, 3차원 컴퓨터 그래픽스 계산에서 다용되는 형이다.

3. 2. 연산자

Cg는 C 언어의 산술 연산자와 논리 연산자를 지원한다.[1] 산술 연산자는 벡터 및 행렬 자료형에도 적용할 수 있어, 프로그램의 가독성을 높이고 직관적인 그래픽스 프로그램 작성을 돕는다.[1]

3. 3. 함수 및 제어 구조

Cg는 C와 기본적인 제어 구조(if/else, while, for 등)를 공유하며, 함수를 정의하는 방식도 비슷하다. Cg는 C언어와 유사한 제어 구조를 기술하기 위한 구문을 가지고 있으며, 함수 정의도 가능하다. 파라미터는 기본적으로 값 전달이며, `in`, `out`, `inout`, `uniform` 한정자를 지정할 수 있다.

3. 4. 표준 라이브러리

Cg/HLSL은 GPU 프로그래밍의 일반적인 작업을 위한 일련의 함수들을 제공한다. 일부 함수는 C에서 `abs`, `sin`과 같은 대응 함수를 가지는 반면, 다른 함수는 텍스처 매핑 함수인 `tex1D`, `tex2D`와 같이 GPU 프로그래밍 작업에 특화되어 있다.[32]

3. 5. 전처리기

Cg는 많은 C 전처리기 지시어를 구현하며 매크로 확장 시스템을 갖추고 있다. `#include`를 구현한다.[7]

4. 환경

Cg 프로그램은 다양한 기능을 가진 GPU에 맞게 여러 '셰이더 프로파일'로 빌드된다.[8] 이러한 프로파일은 각 셰이더에 포함될 수 있는 명령어 수, 사용 가능한 레지스터 수, 셰이더가 사용할 수 있는 리소스 유형 등을 결정한다. 프로그램이 올바르더라도 프로파일에서 작동하기에는 너무 복잡할 수 있다.[7]

마이크로소프트는 GPU의 한 세대에 포함된 일련의 프로파일을 묶어 "셰이더 모델"이라는 용어를 사용하기 시작했다.[9] Cg는 셰이더 모델 5.0까지의 일부 최신 프로파일을 지원하며, GLSL 또는 HLSL로 변환도 지원한다.[8]

Cg는 OpenGL이나 DirectX의 API 기반에서 동작시킬 수 있지만, Cg 셰이더 프로그램을 각 API와 연동하고 바인딩하기 위한 라이브러리가 NVIDIA에서 제공된다. Cg 런타임은 Cg 소스를 어셈블리 코드로 컴파일하고, 실행 중에 셰이더를 컴파일하는 기능을 제공한다. 이를 통해 런타임은 프로그램이 실행 중인 하드웨어에 최적화된 셰이더를 컴파일할 수 있다. 그러나 이 기술은 셰이더의 소스 코드가 컴파일러에 일반 텍스트로 제공되어야 하므로, 프로그램 사용자가 소스 코드에 접근할 수 있다는 단점이 있다.

셰이더 소스 코드 노출 없이 하드웨어 관련 최적화를 유지하기 위해 프로파일 개념이 개발되었다. 셰이더는 서로 다른 그래픽 하드웨어 플랫폼(프로파일)에 맞게 컴파일될 수 있으며, 지원 프로그램 실행 시, 해당 프로파일에 따라 가장 최적화된 셰이더가 로드된다. 예를 들어, 복잡한 픽셀 셰이더를 지원하는 그래픽 카드용 프로파일과 최소 픽셀 셰이더만 지원하는 그래픽 카드용 프로파일이 있을 수 있다. 각 프로파일에 대해 픽셀 셰이더를 생성함으로써, 지원 프로그램은 강력한 시스템에서 화질 저하 없이 지원되는 하드웨어 플랫폼 수를 늘린다.

4. 1. 컴파일 대상 (프로파일)

Cg 프로그램은 다양한 기능을 가진 GPU에 맞게 여러 '셰이더 프로파일'로 빌드된다.[8] 이러한 프로파일은 각 셰이더에 포함될 수 있는 명령어 수, 사용 가능한 레지스터 수, 셰이더가 사용할 수 있는 리소스 유형 등을 결정한다. 프로그램이 올바르더라도 프로파일에서 작동하기에는 너무 복잡할 수 있다.[7]

프로파일 및 셰이더 유형의 수가 증가함에 따라, 마이크로소프트는 GPU의 한 세대에 포함된 일련의 프로파일을 묶어 "셰이더 모델"이라는 용어를 사용하기 시작했다.[9] Cg는 셰이더 모델 5.0까지의 일부 최신 프로파일을 지원하며, GLSL 또는 HLSL로 변환도 지원한다.[8]

Cg에서 사용 가능한 셰이더 프로그램 프로파일(OpenGL이나 DirectX에서의 셰이더 모델 버전)은 2012년 2월 출시된 Cg Toolkit 3.1 기준으로 레퍼런스 매뉴얼에 따르면 다음과 같다.

  • OpenGL
  • NVIDIA Vertex Program 5.0까지
  • NVIDIA Fragment Program 5.0까지
  • NVIDIA Geometry Program 5.0까지
  • NVIDIA Tessellation Control Program 5.0까지
  • NVIDIA Tessellation Evaluation Program 5.0까지
  • DirectX 11.0
  • HLSL Vertex Shader 5.0까지
  • HLSL Pixel Shader 5.0까지
  • HLSL Geometry Shader 5.0까지
  • HLSL Hull Shader 5.0까지
  • HLSL Domain Shader 5.0까지
  • DirectX 10.0
  • HLSL Vertex Shader 4.0까지
  • HLSL Pixel Shader 4.0까지
  • HLSL Geometry Shader 4.0까지
  • DirectX 9.0c
  • HLSL Vertex Shader 3.0까지
  • HLSL Pixel Shader 3.0까지


OpenGL은 버전 4.3에서, DirectX는 버전 11에서 Compute Shader를 도입했지만, Cg는 최종 버전인 3.1 시점에서 이에 대응하지 않았다.

다음은 HLSL 픽셀 셰이더와 버텍스 셰이더를 비교한 표이다.

HLSL 픽셀 셰이더 비교
픽셀 셰이더 버전1.0 ~ 1.3[10]1.4[10]2.0[10][11]2.0a[10][11][12]2.0b[10][11][13]3.0[10][14]4.0[15]
종속 텍스처 제한468무제한8무제한무제한
텍스처 명령어 제한46*232무제한무제한무제한무제한
위치 레지스터아니요아니요아니요아니요아니요
명령어 슬롯8+48+432 + 64512512≥ 512≥ 65536
실행된 명령어8+46*2+8*232 + 6451251265536무제한
텍스처 간접 참조444무제한4무제한무제한
보간된 레지스터2 + 42 + 62 + 82 + 82 + 81032
명령어 조건부 실행아니요아니요아니요아니요아니요
인덱스 입력 레지스터아니요아니요아니요아니요아니요
임시 레지스터2612 ~ 322232324096
상수 레지스터8832323222416×4096
임의의 스위즐링아니요아니요아니요아니요
그라데이션 명령어아니요아니요아니요아니요
루프 카운트 레지스터아니요아니요아니요아니요아니요
면 레지스터 (양면 조명)아니요아니요아니요아니요
동적 흐름 제어아니요아니요아니요아니요아니요예 (24)예 (64)
비트 연산자아니요아니요아니요아니요아니요아니요
네이티브 정수아니요아니요아니요아니요아니요아니요



"실행된 명령어"에 대한 "32 + 64"는 "32개의 텍스처 명령어와 64개의 산술 명령어"를 의미한다.

HLSL 버텍스 셰이더 비교
버텍스 셰이더 버전VS 1.1[18]VS 2.0[11][18][19]VS 2.0a[11][18][19]VS 3.0[14][18]VS 4.0[15]
명령어 슬롯 수128256256≥ 512≥ 65536
최대 실행 명령어 수12810246553665536무제한
명령어 조건부 실행아니요아니요
임시 레지스터121216324096
상수 레지스터 수≥ 96≥ 256256≥ 25616×4096
정적 흐름 제어아니요
동적 흐름 제어아니요아니요
동적 흐름 제어 깊이#redirect#redirect242464
버텍스 텍스처 페치아니요아니요아니요
텍스처 샘플러 수#redirect#redirect#redirect4128
지오메트리 인스턴싱 지원아니요아니요아니요
비트 연산자아니요아니요아니요아니요
네이티브 정수아니요아니요아니요아니요


4. 2. Cg 런타임 라이브러리

Cg 프로그램은 정점 및 픽셀 셰이더를 처리하며, 나머지 렌더링 프로세스는 OpenGL 또는 DirectX API를 사용하는 지원 프로그램이 필요하다. Cg 런타임은 Cg 소스를 어셈블리 코드로 컴파일하고, 실행 중에 셰이더를 컴파일하는 기능을 제공한다. 이를 통해 런타임은 프로그램이 실행 중인 하드웨어에 최적화된 셰이더를 컴파일할 수 있다. 그러나 이 기술은 셰이더의 소스 코드가 컴파일러에 일반 텍스트로 제공되어야 하므로, 프로그램 사용자가 소스 코드에 접근할 수 있다는 단점이 있다.

셰이더 소스 코드 노출 없이 하드웨어 관련 최적화를 유지하기 위해 프로파일 개념이 개발되었다. 셰이더는 서로 다른 그래픽 하드웨어 플랫폼(프로파일)에 맞게 컴파일될 수 있다. 지원 프로그램 실행 시, 해당 프로파일에 따라 가장 최적화된 셰이더가 로드된다. 예를 들어, 복잡한 픽셀 셰이더를 지원하는 그래픽 카드용 프로파일과 최소 픽셀 셰이더만 지원하는 그래픽 카드용 프로파일이 있을 수 있다. 각 프로파일에 대해 픽셀 셰이더를 생성함으로써, 지원 프로그램은 강력한 시스템에서 화질 저하 없이 지원되는 하드웨어 플랫폼 수를 늘린다.

Cg는 OpenGL이나 DirectX의 API 기반에서 동작시킬 수 있지만, Cg 셰이더 프로그램을 각 API와 연동하고 바인딩하기 위한 라이브러리가 NVIDIA에서 제공된다.

4. 3. CgFX

CgFX는 여러 셰이더 프로그램을 조합한 일련의 처리 파이프라인(Pass)과, 이들의 입출력을 묶어 하나의 "Technique"으로 관리할 수 있는 이펙트 프레임워크이다. 이는 Direct3D 9 및 Direct3D 11의 확장 라이브러리(D3DX9, D3DX11)와 Direct3D 10의 코어 라이브러리에서 지원하는 이펙트 프레임워크와 매우 유사하며, 개별적으로 파이프라인 스테이지별 셰이더 프로그램 및 그 입출력을 관리하는 것보다 훨씬 셰이더 프로그램의 파이프라인을 구축하기 쉽다.

Effect는 여러 Technique을 포함할 수 있으며, Technique은 여러 Pass를 포함할 수 있다.

5. 컴파일러 및 파생 언어

Cg 방언은 엔비디아의 Cg 툴킷 형태로만 컴파일러가 존재해왔다.

마이크로소프트는 HLSL용 컴파일러 2종을 출시했다. 최초의 컴파일러는 2015년까지 지원된 폐쇄형 FXC(Effect Compiler)였다. 이는 최신 HLSL 기능을 지원하는 LLVM 기반의 오픈 소스 DXC(DirectXShaderCompiler)로 대체되었다.[21] 두 컴파일러 모두 바이트코드를 생성한다. 이전 FXC는 DXBC를 사용했지만, DXC는 현재 DXIL을 사용한다. DXC는 또한 SPIR-V 바이트코드를 생성할 수 있다.[22]

크로노스 그룹은 GLSL-to-SPIR_V 컴파일러인 ''glslang''의 프론트엔드 형태로 LLVM 기반의 HLSL 컴파일러를 작성했다. SPIR-V 지원은 셰이더가 크로스 플랫폼이 될 수 있음을 의미하며, 더 이상 DirectX 스택으로 제한되지 않는다.[23] 이 작업은 이전에 HLSL2GLSL과 같은 소스 레벨 변환기에 의해 수행되었지만, 결과 코드는 종종 비대해졌다.[24]

Cg/HLSL을 기반으로 하는 파생 언어는 다음과 같다.


  • 플레이스테이션 셰이더 언어(PSSL)[25]
  • ReShadeFX 셰이딩 언어: ReShadeFX로 작성된 셰이더는 OpenGL, DX 또는 Vulkan으로 컴파일되어 게임에 주입되어 후처리 필터 역할을 한다.[26]

6. 활용 및 개발 중단

엔비디아는 Cg를 이용한 셰이더 제작 도구로 FX Composer라는 소프트웨어를 개발 및 제공했지만, DirectX 10을 지원하는 v2.5를 마지막으로 개발이 종료되었다.[33]

6. 1. 활용 사례

Cg 또는 HLSL을 사용하는 애플리케이션 및 게임은 다음과 같다.

6. 2. 개발 중단 및 후속 기술

Cg는 2012년 4월에 출시된 버전 3.1.0013을 마지막으로 업데이트가 이루어지지 않아 개발이 종료되었다. 개발자에게 Cg 런타임 자체는 계속 제공되지만, 향후 새로운 하드웨어 기능은 지원하지 않으므로 신규 개발에는 채택하지 않는 것이 좋다.[34]

엔비디아는 후속 크로스 플랫폼 셰이더 효과 프레임워크로 nvFX를 개발했다.[35][36] nvFX는 HLSL 및 GLSL을 백엔드로 사용하며, OpenGL ES도 지원하여 모바일 등의 임베디드 기기도 대상으로 한다.

참조

[1] 웹사이트 Fusion Industries :: Cg and HLSL FAQ :: https://web.archive.[...] 2012-08-24
[2] 웹사이트 The Cg Tutorial - Chapter 1. Introduction https://developer.do[...]
[3] 웹사이트 Writing HLSL Shaders in Direct3D 9 (Windows) https://msdn.microso[...] 2021-05-24
[4] 웹사이트 Cg FAQ https://developer.nv[...] 2017-05-25
[5] 웹사이트 Cg Toolkit | NVIDIA Developer https://developer.nv[...] 2011-03-08
[6] 웹사이트 Cg 2.0 Release Notes https://developer.do[...] 2008-01
[7] 논문 Cg in Two Pages https://arxiv.org/ab[...] 2003
[8] 웹사이트 Cg Profile Documentation http://developer.dow[...]
[9] 웹사이트 Shader Models vs Shader Profiles - Win32 apps https://docs.microso[...] 2021-06-30
[10] 웹사이트 Pixel Shader Differences https://msdn.microso[...] 2011-02-08
[11] 웹사이트 Microsoft DirectX High Level Shader Language (HLSL) http://www.microsoft[...] 2004-03-15
[12] 웹사이트 NVIDIA Introduces GeForce FX (NV30) http://anandtech.com[...]
[13] 웹사이트 ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives http://anandtech.com[...]
[14] 간행물 Shader Model 3.0 NVIDIA Developer Technology Group 2004
[15] 간행물 The Direct3D 10 System Microsoft Corporation 2006
[16] 웹사이트 Registers - ps_4_1 (Windows) https://msdn.microso[...] 2019-08-23
[17] 웹사이트 Registers - ps_5_0 (Windows) https://msdn.microso[...] 2019-08-23
[18] 웹사이트 Vertex Shader Differences https://msdn.microso[...] 2011-02-08
[19] 웹사이트 NVIDIA Introduces GeForce FX (NV30) http://anandtech.com[...]
[20] 웹사이트 Registers - vs_4_1 (Windows) https://msdn.microso[...] 2019-08-23
[21] 웹사이트 Porting from FXC to DXC https://github.com/m[...]
[22] 웹사이트 microsoft/DirectXShaderCompiler: This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang. https://github.com/m[...] Microsoft 2020-10-21
[23] 웹사이트 glslang: Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator. https://github.com/K[...] The Khronos Group 2020-10-21
[24] Youtube Matt Turner "https://www.youtube[...]
[25] 웹사이트 PlayStation Shading Language for PS4 https://www.gdcvault[...]
[26] 웹사이트 ReShade FX shading language https://github.com/c[...] 2022-02-15
[27] 웹사이트 Maya Cg Plug-in | NVIDIA http://www.nvidia.co[...]
[28] 웹사이트 LightWave - 11.6 Features Overview https://www.lightwav[...]
[29] 웹사이트 Unity - Manual: Writing Shaders http://docs.unity3d.[...]
[30] 뉴스 NVIDIA、グラフィックス言語「Cg(C for graphics)」を公開 https://pc.watch.imp[...]
[31] 웹사이트 Cg language | NVIDIA Developer Zone https://developer.do[...]
[32] 웹사이트 Cg Standard Library Documentation | NVIDIA Developer Zone https://developer.do[...]
[33] 웹사이트 FX Composer https://developer.nv[...]
[34] 웹사이트 'Cg Toolkit: "Cg 3.1 is our last release and while we continue to make it available to developers, we do not recommend using it in new development projects because future hardware features may not be supported."' https://developer.nv[...]
[35] 웹사이트 nvFX: A New Scene and Material Effect Framework for OpenGL and DirectX http://on-demand.gpu[...]
[36] Github tlorach/nvFX: Generic Effect system for Graphic API's (OpenGL and DirectX) https://github.com/t[...]
[37] 웹사이트 LightWave - LightWave 3D Group Unveils LightWave 116 https://www.lightwav[...]
[38] 메뉴얼 Maya ユーザ ガイド: CgFX シェーダを操作する http://download.auto[...]
[39] 뉴스 NVIDIAに聞く、GPUプログラミングの最新動向:CodeZine https://codezine.jp/[...]
[40] 문서
[41] Wikibooks Cg Programming/Unity - Wikibooks, open books for an open world https://en.wikibooks[...]
[42] 웹사이트 Cg - OpenGL.org https://www.opengl.o[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com