fbpx
Wikipedia

Cg (programming language)

Cg (short for C for Graphics) and High-Level Shader Language (HLSL) are two names given to a high-level shading language developed by Nvidia and Microsoft for programming shaders. Cg/HLSL is based on the C programming language and although they share the same core syntax, some features of C were modified and new data types were added to make Cg/HLSL more suitable for programming graphics processing units.[1][2]

Cg/HLSL
A scene containing several different 2D HLSL shaders. Distortion of the statue is achieved purely physically, while the texture of the rectangular frame beside it is based on color intensity. The square in the background has been transformed and rotated. The partial transparency and reflection of the water in the foreground are added by a shader applied finally to the entire scene.
Familyshading language
DevelopernVIDIA, Microsoft
Websitedeveloper.nvidia.com/cg-toolkit
Dialects
Cg, HLSL, Playstation Shading Language
Influenced by
C, RenderMan Shading Language
Influenced
GLSL

Two main branches of the Cg/HLSL language exist: the Nvidia Cg compiler (cgc) which outputs DirectX or OpenGL and the Microsoft HLSL which outputs DirectX shaders in bytecode format.[3][4] Nvidia's cgc was deprecated in 2012, with no additional development or support available.[5]

HLSL shaders can enable many special effects in both 2D and 3D computer graphics. The Cg/HLSL language originally only included support for vertex shaders and pixel shaders, but other types of shaders were introduced gradually as well:

Background edit

Due to technical advances in graphics hardware, some areas of 3D graphics programming have become quite complex. To simplify the process, new features were added to graphics cards, including the ability to modify their rendering pipelines using vertex and pixel shaders.

In the beginning, vertex and pixel shaders were programmed at a very low level with only the assembly language of the graphics processing unit. Although using the assembly language gave the programmer complete control over code and flexibility, it was fairly hard to use. A portable, higher level language for programming the GPU was needed, so Cg was created to overcome these problems and make shader development easier.

Some of the benefits of using Cg over assembly are:

  • High level code is easier to learn, program, read, and maintain than assembly code.
  • Cg code is portable to a wide range of hardware and platforms, unlike assembly code, which usually depends on hardware and the platforms it's written for.
  • The Cg compiler can optimize code and do lower level tasks automatically, which are hard to do and error prone in assembly.

Language edit

Data types edit

Cg has six basic data types. Some of them are the same as in C, while others are especially added for GPU programming. These types are:

  • float - a 32bit floating point number
  • half - a 16bit floating point number
  • int - a 32bit integer
  • fixed - a 12bit fixed point number
  • bool - a boolean variable
  • sampler* - represents a texture object

Cg also features vector and matrix data types that are based on the basic data types, such as float3 and float4x4. Such data types are quite common when dealing with 3D graphics programming. Cg also has struct and array data types, which work in a similar way to their C equivalents.

Operators edit

Cg supports a wide range of operators, including the common arithmetic operators from C, the equivalent arithmetic operators for vector and matrix data types, and the common logical operators.

Functions and control structures edit

Cg shares the basic control structures with C, like if/else, while, and for. It also has a similar way of defining functions.

Semantics edit

Preprocessor edit

Cg implements many C preprocessor directives and its macro expansion system. It implements #include.[7]

HLSL features edit

  • Namespace
  • Annotation

Environment edit

Compilation targets edit

Cg programs are built for different shader profiles that stand for GPUs with different capabilities.[8] These profiles decide, among others, how many instructions can be in each shader, how many registers are available, and what kind of resources a shader can use. Even if a program is correct, it might be too complex to work on a profile.[7]

As the number of profile and shader types cropped up, Microsoft has switched to use the term "Shader Model" to group a set of profiles found in a generation of GPUs.[9] Cg supports some of the newer profiles up to Shader Model 5.0 as well as translation to glsl or hlsl.[8]

Comparison of HLSL pixel shaders
Pixel shader version 1.0 to 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]
4.1[16]
5.0[17]
Dependent texture limit 4 6 8 Unlimited 8 Unlimited Unlimited
Texture instruction limit 4 6*2 32 Unlimited Unlimited Unlimited Unlimited
Position register No No No No No Yes Yes
Instruction slots 8+4 8+4 32 + 64 512 512 ≥ 512 ≥ 65536
Executed instructions 8+4 6*2+8*2 32 + 64 512 512 65536 Unlimited
Texture indirections 4 4 4 Unlimited 4 Unlimited Unlimited
Interpolated registers 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
Instruction predication No No No Yes No Yes No
Index input registers No No No No No Yes Yes
Temp registers 2 6 12 to 32 22 32 32 4096
Constant registers 8 8 32 32 32 224 16×4096
Arbitrary swizzling No No No Yes No Yes Yes
Gradient instructions No No No Yes No Yes Yes
Loop count register No No No No No Yes Yes
Face register (2-sided lighting) No No No No Yes Yes Yes
Dynamic flow control No No No No No Yes (24) Yes (64)
Bitwise Operators No No No No No No Yes
Native Integers No No No No No No Yes
  • PS 1.0 — Unreleased 3dfx Rampage, DirectX 8.
  • PS 1.1GeForce 3, DirectX 8.
  • PS 1.23Dlabs Wildcat VP, DirectX 8.0a.
  • PS 1.3GeForce 4 Ti, DirectX 8.0a.
  • PS 1.4Radeon 8500-9250, Matrox Parhelia, DirectX 8.1.
  • Shader Model 2.0Radeon 9500-9800/X300-X600, DirectX 9.
  • Shader Model 2.0aGeForce FX/PCX-optimized model, DirectX 9.0a.
  • Shader Model 2.0bRadeon X700-X850 shader model, DirectX 9.0b.
  • Shader Model 3.0Radeon X1000 and GeForce 6, DirectX 9.0c.
  • Shader Model 4.0Radeon HD 2000 and GeForce 8, DirectX 10.
  • Shader Model 4.1Radeon HD 3000 and GeForce 200, DirectX 10.1.
  • Shader Model 5.0Radeon HD 5000 and GeForce 400, DirectX 11.
  • Shader Model 5.1GCN 1+, Fermi+, DirectX 12 (11_0+) with WDDM 2.0.
  • Shader Model 6.0 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.1.
  • Shader Model 6.1 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.3.
  • Shader Model 6.2 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.4.
  • Shader Model 6.3 — GCN 1+, Kepler+, DirectX 12 (11_0+) with WDDM 2.5.
  • Shader Model 6.4 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) with WDDM 2.6.
  • Shader Model 6.5 — GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+) with WDDM 2.7.

"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."

Comparison of HLSL Vertex shaders
Vertex shader version 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]
VS 4.1[20]
VS 5.0[17]
# of instruction slots 128 256 256 ≥ 512 ≥ 65536
Max # of instructions executed 128 1024 65536 65536 Unlimited
Instruction predication No No Yes Yes Yes
Temp registers 12 12 16 32 4096
# constant registers ≥ 96 ≥ 256 256 ≥ 256 16×4096
Static flow control No Yes Yes Yes Yes
Dynamic flow control No No Yes Yes Yes
Dynamic flow control depth 24 24 64
Vertex texture fetch No No No Yes Yes
# of texture samplers 4 128
Geometry instancing support No No No Yes Yes
Bitwise operators No No No No Yes
Native integers No No No No Yes

The standard library edit

As in C, Cg/HLSL features a set of functions for common tasks in GPU programming. Some of the functions have equivalents in C, like the mathematical functions abs and sin, while others are specialized in GPU programming tasks, like the texture mapping functions tex1D and tex2D.

The Cg runtime library edit

Cg programs are merely vertex and pixel shaders, and they need supporting programs that handle the rest of the rendering process. Cg can be used with two graphics APIs: OpenGL or DirectX. Each has its own set of Cg functions to communicate with the Cg program, like setting the current Cg shader, passing parameters, and such tasks.

In addition to being able to compile Cg source to assembly code, the Cg runtime also has the ability to compile shaders during execution of the supporting program. This allows the runtime to compile the shader using the latest optimizations available for hardware that the program is currently executing on. However, this technique requires that the source code for the shader be available in plain text to the compiler, allowing the user of the program to access the source-code for the shader. Some developers view this as a major drawback of this technique.

To avoid exposing the source code of the shader, and still maintain some of the hardware specific optimizations, the concept of profiles was developed. Shaders can be compiled to suit different graphics hardware platforms (according to profiles). When executing the supporting program, the best/most optimized shader is loaded according to its profile. For instance there might be a profile for a graphics card that supports complex pixel shaders, and another profile for one that supports only minimal pixel shaders. By creating a pixel shader for each of these profiles a supporting program enlarges the number of supported hardware platforms without sacrificing picture quality on powerful systems.'

Compilers and dialects edit

The Cg dialect has only ever had one compiler, in the form of Nvidia's Cg toolkit.

Microsoft has released two compilers for HLSL. The original compiler was the closed-source FXC (Effect Compiler), supported until 2015. It was deprecated in favor of the open-source LLVM-based DXC (DirectXShaderCompiler) with support for newer HLSL features.[21] Both compilers generate bytecode: while the older FXC used DXBC, DXC now uses DXIL. DXC can also emit SPIR-V bytecode.[22]

The Khronos Group has also written a LLVM-based HLSL compiler, in the form of a frontend for glslang, their GLSL-to-SPIR_V compiler. Support for SPIR-V means that the shaders can be cross-platform, no longer limiting them to a DirectX stack.[23] This task was previously performed by source-level converters like HLSL2GLSL, but the resulting code is often bloated.[24]

Derived languages edit

The PlayStation Shading Language is based on Cg/HLSL.[25]

The ReshadeFX shading language is also based on Cg/HLSL. Shaders written in ReshadeFX are compiled to OpenGL, DX, or Vulkan and injected into games to act as post-processing filters.[26]

Applications and games that use Cg or HLSL edit

See also edit

References edit

  1. ^ . 24 August 2012. Archived from the original on 24 August 2012.
  2. ^ "The Cg Tutorial - Chapter 1. Introduction". developer.download.nvidia.cn.
  3. ^ "Writing HLSL Shaders in Direct3D 9 (Windows)". msdn.microsoft.com. 24 May 2021.
  4. ^ "Cg FAQ". NVIDIA DesignWorks. 8 March 2011. Retrieved 25 May 2017.
  5. ^ "Cg Toolkit | NVIDIA Developer". 8 March 2011.
  6. ^ "Cg 2.0 Release Notes" (PDF). nvidia.com. January 2008.
  7. ^ a b Mark J. Kilgard, Cg in Two Pages, 2003.
  8. ^ a b "Cg Profile Documentation". Nvidia developer.
  9. ^ "Shader Models vs Shader Profiles - Win32 apps". docs.microsoft.com. 30 June 2021.
  10. ^ a b c d e f "Pixel Shader Differences". msdn.microsoft.com. 2011-02-08.
  11. ^ a b c d e Peeper, Craig (2004-03-15). "Microsoft DirectX High Level Shader Language (HLSL)" (PPT). microsoft.com. pp. 5–8, 24–25.
  12. ^ Shimpi, Anand Lal. "NVIDIA Introduces GeForce FX (NV30)".
  13. ^ Wilson, Derek. "ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives".
  14. ^ a b Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
  15. ^ a b The Direct3D 10 System, David Blythe, Microsoft Corporation, 2006.
  16. ^ "Registers - ps_4_1 (Windows)". msdn.microsoft.com. 23 August 2019.
  17. ^ a b "Registers - ps_5_0 (Windows)". msdn.microsoft.com. 23 August 2019.
  18. ^ a b c d "Vertex Shader Differences". msdn.microsoft.com. 2011-02-08.
  19. ^ a b Shimpi, Anand Lal. "NVIDIA Introduces GeForce FX (NV30)".
  20. ^ "Registers - vs_4_1 (Windows)". msdn.microsoft.com. 23 August 2019.
  21. ^ "Porting from FXC to DXC". GitHub.
  22. ^ "microsoft/DirectXShaderCompiler: This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang". Microsoft. 21 October 2020.
  23. ^ "glslang: Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator". The Khronos Group. 21 October 2020.
  24. ^ Matt Turner. Video on YouTube.
  25. ^ Stenson, Richard; Ho, Chris. "PlayStation Shading Language for PS4". GDC Europe 2013.
  26. ^ "ReShade FX shading language". GitHub. 15 February 2022.
  27. ^ "Maya Cg Plug-in | NVIDIA".
  28. ^ "LightWave - 11.6 Features Overview".
  29. ^ "Unity - Manual: Writing Shaders".

Further reading edit

  • Randima Fernando, Mark J. Kilgard, The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics, Addison-Wesley Professional, ISBN 0-321-19496-9
  • Randima Fernando, GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time Graphics, Addison-Wesley Professional, ISBN 0-321-22832-4
  • William R. Mark, R. Steven Glanville, Kurt Akeley, Mark J. Kilgard, Cg: A System for Programming Graphics Hardware in a C-like Language, Proceedings of SIGGRAPH 2003, doi:10.1145/1201775.882362

External links edit

  • cgc-opensrc - Mirror for nvidia's open source compiler, 2002
  • Some essential materials (e.g. the design paper) are gathered in these course notes from Siggraph 2005
  • Nvidia-hosted materials:
    • Cg FAQ
    • Cg Toolkit
    • Cg Language Reference and Documentation
  • Documentation for the Cg Shader standard used by emulators
  • Aras Pranckevičius, Cross Platform Shaders in 2014.

programming, language, this, article, relies, excessively, references, primary, sources, please, improve, this, article, adding, secondary, tertiary, sources, find, sources, programming, language, news, newspapers, books, scholar, jstor, 2024, learn, when, rem. This article relies excessively on references to primary sources Please improve this article by adding secondary or tertiary sources Find sources Cg programming language news newspapers books scholar JSTOR May 2024 Learn how and when to remove this message Cg short for C for Graphics and High Level Shader Language HLSL are two names given to a high level shading language developed by Nvidia and Microsoft for programming shaders Cg HLSL is based on the C programming language and although they share the same core syntax some features of C were modified and new data types were added to make Cg HLSL more suitable for programming graphics processing units 1 2 Cg HLSLA scene containing several different 2D HLSL shaders Distortion of the statue is achieved purely physically while the texture of the rectangular frame beside it is based on color intensity The square in the background has been transformed and rotated The partial transparency and reflection of the water in the foreground are added by a shader applied finally to the entire scene Familyshading languageDevelopernVIDIA MicrosoftWebsitedeveloper wbr nvidia wbr com wbr cg toolkitDialectsCg HLSL Playstation Shading LanguageInfluenced byC RenderMan Shading LanguageInfluencedGLSL Two main branches of the Cg HLSL language exist the Nvidia Cg compiler cgc which outputs DirectX or OpenGL and the Microsoft HLSL which outputs DirectX shaders in bytecode format 3 4 Nvidia s cgc was deprecated in 2012 with no additional development or support available 5 HLSL shaders can enable many special effects in both 2D and 3D computer graphics The Cg HLSL language originally only included support for vertex shaders and pixel shaders but other types of shaders were introduced gradually as well DirectX 10 Shader Model 4 and Cg 2 0 introduced geometry shaders 6 DirectX 11 Shader Model 5 introduced compute shaders GPGPU and tessellation shaders hull and domain The latter is present in Cg 3 1 DirectX 12 Shader Model 6 3 introduced ray tracing shaders ray generation intersection bit closest hit miss Contents 1 Background 2 Language 2 1 Data types 2 2 Operators 2 3 Functions and control structures 2 4 Semantics 2 5 Preprocessor 2 6 HLSL features 3 Environment 3 1 Compilation targets 3 2 The standard library 3 3 The Cg runtime library 4 Compilers and dialects 4 1 Derived languages 5 Applications and games that use Cg or HLSL 6 See also 7 References 8 Further reading 9 External linksBackground editDue to technical advances in graphics hardware some areas of 3D graphics programming have become quite complex To simplify the process new features were added to graphics cards including the ability to modify their rendering pipelines using vertex and pixel shaders In the beginning vertex and pixel shaders were programmed at a very low level with only the assembly language of the graphics processing unit Although using the assembly language gave the programmer complete control over code and flexibility it was fairly hard to use A portable higher level language for programming the GPU was needed so Cg was created to overcome these problems and make shader development easier Some of the benefits of using Cg over assembly are High level code is easier to learn program read and maintain than assembly code Cg code is portable to a wide range of hardware and platforms unlike assembly code which usually depends on hardware and the platforms it s written for The Cg compiler can optimize code and do lower level tasks automatically which are hard to do and error prone in assembly Language editData types edit Cg has six basic data types Some of them are the same as in C while others are especially added for GPU programming These types are float a 32bit floating point number half a 16bit floating point number int a 32bit integer fixed a 12bit fixed point number bool a boolean variable sampler represents a texture object Cg also features vector and matrix data types that are based on the basic data types such as float3 and float4x4 Such data types are quite common when dealing with 3D graphics programming Cg also has struct and array data types which work in a similar way to their C equivalents Operators edit Cg supports a wide range of operators including the common arithmetic operators from C the equivalent arithmetic operators for vector and matrix data types and the common logical operators Functions and control structures edit Cg shares the basic control structures with C like if else while and for It also has a similar way of defining functions Semantics edit Preprocessor edit Cg implements many C preprocessor directives and its macro expansion system It implements include 7 HLSL features edit Namespace AnnotationEnvironment editCompilation targets edit Cg programs are built for different shader profiles that stand for GPUs with different capabilities 8 These profiles decide among others how many instructions can be in each shader how many registers are available and what kind of resources a shader can use Even if a program is correct it might be too complex to work on a profile 7 As the number of profile and shader types cropped up Microsoft has switched to use the term Shader Model to group a set of profiles found in a generation of GPUs 9 Cg supports some of the newer profiles up to Shader Model 5 0 as well as translation to glsl or hlsl 8 Comparison of HLSL pixel shaders Pixel shader version 1 0 to 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 4 1 16 5 0 17 Dependent texture limit 4 6 8 Unlimited 8 Unlimited Unlimited Texture instruction limit 4 6 2 32 Unlimited Unlimited Unlimited Unlimited Position register No No No No No Yes Yes Instruction slots 8 4 8 4 32 64 512 512 512 65536 Executed instructions 8 4 6 2 8 2 32 64 512 512 65536 Unlimited Texture indirections 4 4 4 Unlimited 4 Unlimited Unlimited Interpolated registers 2 4 2 6 2 8 2 8 2 8 10 32 Instruction predication No No No Yes No Yes No Index input registers No No No No No Yes Yes Temp registers 2 6 12 to 32 22 32 32 4096 Constant registers 8 8 32 32 32 224 16 4096 Arbitrary swizzling No No No Yes No Yes Yes Gradient instructions No No No Yes No Yes Yes Loop count register No No No No No Yes Yes Face register 2 sided lighting No No No No Yes Yes Yes Dynamic flow control No No No No No Yes 24 Yes 64 Bitwise Operators No No No No No No Yes Native Integers No No No No No No Yes PS 1 0 Unreleased 3dfx Rampage DirectX 8 PS 1 1 GeForce 3 DirectX 8 PS 1 2 3Dlabs Wildcat VP DirectX 8 0a PS 1 3 GeForce 4 Ti DirectX 8 0a PS 1 4 Radeon 8500 9250 Matrox Parhelia DirectX 8 1 Shader Model 2 0 Radeon 9500 9800 X300 X600 DirectX 9 Shader Model 2 0a GeForce FX PCX optimized model DirectX 9 0a Shader Model 2 0b Radeon X700 X850 shader model DirectX 9 0b Shader Model 3 0 Radeon X1000 and GeForce 6 DirectX 9 0c Shader Model 4 0 Radeon HD 2000 and GeForce 8 DirectX 10 Shader Model 4 1 Radeon HD 3000 and GeForce 200 DirectX 10 1 Shader Model 5 0 Radeon HD 5000 and GeForce 400 DirectX 11 Shader Model 5 1 GCN 1 Fermi DirectX 12 11 0 with WDDM 2 0 Shader Model 6 0 GCN 1 Kepler DirectX 12 11 0 with WDDM 2 1 Shader Model 6 1 GCN 1 Kepler DirectX 12 11 0 with WDDM 2 3 Shader Model 6 2 GCN 1 Kepler DirectX 12 11 0 with WDDM 2 4 Shader Model 6 3 GCN 1 Kepler DirectX 12 11 0 with WDDM 2 5 Shader Model 6 4 GCN 1 Kepler Skylake DirectX 12 11 0 with WDDM 2 6 Shader Model 6 5 GCN 1 Kepler Skylake DirectX 12 11 0 with WDDM 2 7 32 64 for Executed Instructions means 32 texture instructions and 64 arithmetic instructions Comparison of HLSL Vertex shaders Vertex shader version 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 VS 4 1 20 VS 5 0 17 of instruction slots 128 256 256 512 65536 Max of instructions executed 128 1024 65536 65536 Unlimited Instruction predication No No Yes Yes Yes Temp registers 12 12 16 32 4096 constant registers 96 256 256 256 16 4096 Static flow control No Yes Yes Yes Yes Dynamic flow control No No Yes Yes Yes Dynamic flow control depth 24 24 64 Vertex texture fetch No No No Yes Yes of texture samplers 4 128 Geometry instancing support No No No Yes Yes Bitwise operators No No No No Yes Native integers No No No No Yes The standard library edit As in C Cg HLSL features a set of functions for common tasks in GPU programming Some of the functions have equivalents in C like the mathematical functions abs and sin while others are specialized in GPU programming tasks like the texture mapping functions tex1D and tex2D The Cg runtime library edit Cg programs are merely vertex and pixel shaders and they need supporting programs that handle the rest of the rendering process Cg can be used with two graphics APIs OpenGL or DirectX Each has its own set of Cg functions to communicate with the Cg program like setting the current Cg shader passing parameters and such tasks In addition to being able to compile Cg source to assembly code the Cg runtime also has the ability to compile shaders during execution of the supporting program This allows the runtime to compile the shader using the latest optimizations available for hardware that the program is currently executing on However this technique requires that the source code for the shader be available in plain text to the compiler allowing the user of the program to access the source code for the shader Some developers view this as a major drawback of this technique To avoid exposing the source code of the shader and still maintain some of the hardware specific optimizations the concept of profiles was developed Shaders can be compiled to suit different graphics hardware platforms according to profiles When executing the supporting program the best most optimized shader is loaded according to its profile For instance there might be a profile for a graphics card that supports complex pixel shaders and another profile for one that supports only minimal pixel shaders By creating a pixel shader for each of these profiles a supporting program enlarges the number of supported hardware platforms without sacrificing picture quality on powerful systems Compilers and dialects editThe Cg dialect has only ever had one compiler in the form of Nvidia s Cg toolkit Microsoft has released two compilers for HLSL The original compiler was the closed source FXC Effect Compiler supported until 2015 It was deprecated in favor of the open source LLVM based DXC DirectXShaderCompiler with support for newer HLSL features 21 Both compilers generate bytecode while the older FXC used DXBC DXC now uses DXIL DXC can also emit SPIR V bytecode 22 The Khronos Group has also written a LLVM based HLSL compiler in the form of a frontend for glslang their GLSL to SPIR V compiler Support for SPIR V means that the shaders can be cross platform no longer limiting them to a DirectX stack 23 This task was previously performed by source level converters like HLSL2GLSL but the resulting code is often bloated 24 Derived languages edit The PlayStation Shading Language is based on Cg HLSL 25 The ReshadeFX shading language is also based on Cg HLSL Shaders written in ReshadeFX are compiled to OpenGL DX or Vulkan and injected into games to act as post processing filters 26 Applications and games that use Cg or HLSL edit3DVIA Virtools Adobe Photoshop Maya 27 Battlefield 2 Crystal Space Dolphinity Racer Earth s Special Forces A Half Life Mod Enemy Territory Quake Wars Doom 3 BFG Edition EON Professional Ultra of EON Reality eyeon Fusion Far Cry Garshasp The Monster Slayer GLScene Gun Metal Hitman Blood Money Irrlicht Engine League of Legends Lightfeather 3D Engine LightWave 11 6 28 muvee Reveal OGRE OpenEmu Panda3D PCSX2 PlayStation 3 RetroArch R U S E Snes9x Unity game engine 29 Unreal EngineSee also editComputer programming Computer graphics Vertex and pixel shaders High level shader language OpenGL shading language Shader Model OpenGL DirectXReferences edit Fusion Industries Cg and HLSL FAQ 24 August 2012 Archived from the original on 24 August 2012 The Cg Tutorial Chapter 1 Introduction developer download nvidia cn Writing HLSL Shaders in Direct3D 9 Windows msdn microsoft com 24 May 2021 Cg FAQ NVIDIA DesignWorks 8 March 2011 Retrieved 25 May 2017 Cg Toolkit NVIDIA Developer 8 March 2011 Cg 2 0 Release Notes PDF nvidia com January 2008 a b Mark J Kilgard Cg in Two Pages 2003 a b Cg Profile Documentation Nvidia developer Shader Models vs Shader Profiles Win32 apps docs microsoft com 30 June 2021 a b c d e f Pixel Shader Differences msdn microsoft com 2011 02 08 a b c d e Peeper Craig 2004 03 15 Microsoft DirectX High Level Shader Language HLSL PPT microsoft com pp 5 8 24 25 Shimpi Anand Lal NVIDIA Introduces GeForce FX NV30 Wilson Derek ATI Radeon X800 Pro and XT Platinum Edition R420 Arrives a b Shader Model 3 0 Ashu Rege NVIDIA Developer Technology Group 2004 a b The Direct3D 10 System David Blythe Microsoft Corporation 2006 Registers ps 4 1 Windows msdn microsoft com 23 August 2019 a b Registers ps 5 0 Windows msdn microsoft com 23 August 2019 a b c d Vertex Shader Differences msdn microsoft com 2011 02 08 a b Shimpi Anand Lal NVIDIA Introduces GeForce FX NV30 Registers vs 4 1 Windows msdn microsoft com 23 August 2019 Porting from FXC to DXC GitHub microsoft DirectXShaderCompiler This repo hosts the source for the DirectX Shader Compiler which is based on LLVM Clang Microsoft 21 October 2020 glslang Khronos reference front end for GLSL ESSL partial front end for HLSL and a SPIR V generator The Khronos Group 21 October 2020 Matt Turner Video on YouTube Stenson Richard Ho Chris PlayStation Shading Language for PS4 GDC Europe 2013 ReShade FX shading language GitHub 15 February 2022 Maya Cg Plug in NVIDIA LightWave 11 6 Features Overview Unity Manual Writing Shaders Further reading editRandima Fernando Mark J Kilgard The Cg Tutorial The Definitive Guide to Programmable Real Time Graphics Addison Wesley Professional ISBN 0 321 19496 9 Randima Fernando GPU Gems Programming Techniques Tips and Tricks for Real Time Graphics Addison Wesley Professional ISBN 0 321 22832 4 William R Mark R Steven Glanville Kurt Akeley Mark J Kilgard Cg A System for Programming Graphics Hardware in a C like Language Proceedings of SIGGRAPH 2003 doi 10 1145 1201775 882362External links editcgc opensrc Mirror for nvidia s open source compiler 2002 Some essential materials e g the design paper are gathered in these course notes from Siggraph 2005 Nvidia hosted materials Cg FAQ Cg Toolkit Cg Language Reference and Documentation NeHe Cg vertex shader tutorial Documentation for the Cg Shader standard used by emulators Aras Pranckevicius Cross Platform Shaders in 2014 Retrieved from https en wikipedia org w index php title Cg programming language amp oldid 1225173350, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.