Fact-checked by Grok 2 weeks ago

Shading language

A shading language is a specialized programming language in designed to describe how interacts with surfaces, sources, and atmospheres, enabling the of realistic or stylized in rendered imagery. These languages facilitate the creation of shaders, compact programs that execute on graphics processing units (GPUs) to compute per-vertex or per-fragment attributes such as color, coordinates, and during the . By providing procedural control over and calculations, they extend fixed-function rendering systems, allowing for flexible customization of material properties, environmental effects, and artistic styles in applications ranging from to games. The concept of shading languages originated in the late 1980s to address limitations in early rendering software, which relied on predefined models that lacked expressiveness for complex scenes. A foundational example is the RenderMan Shading Language (RSL), introduced in 1988 as part of Pixar's RenderMan interface, a C-like syntax that separates modeling from rendering and supports surface, light source, displacement, volume, and imager shaders for offline photorealistic rendering in . This design emphasized modularity, with built-in types like points, colors, and vectors, along with a library of functions for noise, filtering, and geometric operations, influencing subsequent standards in production environments. In the realm of real-time graphics, shading languages evolved with the advent of programmable GPUs in the early 2000s, shifting focus toward efficiency and parallelism for interactive applications. Key examples include the High-Level Shading Language (HLSL), developed by for 9.0 in 2002, which uses C++-inspired syntax for and shaders in game engines; and the (GLSL), released in 2004 as part of 2.0 by the (with the initial specification in 2002), offering cross-platform compatibility with precision qualifiers (e.g., lowp, mediump, highp) optimized for embedded and desktop hardware. NVIDIA's (C for Graphics), introduced in 2002, further bridged HLSL and GLSL by compiling to multiple backends, promoting portability across APIs. These languages typically feature vector and matrix data types, uniform variables for shared data, and built-in functions for transformations, texturing, and lighting, enabling effects like shadows, reflections, and procedural textures at interactive frame rates. Modern developments continue to refine shading languages for emerging hardware and workflows, such as and , with efforts like —originally introduced by around 2018 and hosted by Khronos since November 2024—aiming to unify shader development through modular compilation and support for advanced features like ray tracing and integration. Despite variations in syntax and ecosystem, all shading languages prioritize performance on parallel architectures, with compilers translating high-level code into GPU assembly for stages like processing, fragment shading, and compute tasks beyond traditional rendering. This evolution has democratized complex graphics programming, powering industries from entertainment to scientific visualization.

Overview

Definition and purpose

A shading language is a domain-specific programming language tailored for developing shaders that calculate lighting, shading, and various visual effects on graphics processing units (GPUs). Unlike general-purpose languages, it incorporates native support for and operations, texture sampling, and to efficiently handle graphics computations. The primary purpose of shading languages is to provide programmable control over key stages in the , such as processing and fragment , enabling the creation of realistic or stylized visuals through custom algorithms for effects like shadows, reflections, and procedural textures. This programmability contrasts with earlier fixed-function by allowing developers to implement bespoke computations that simulate light interactions with surfaces, volumes, and atmospheres. Shaders, as small programs written in these languages, execute in parallel across GPU cores, leveraging the hardware's (SIMD) architecture to process vast numbers of or simultaneously. Common types include shaders, which transform and position ; fragment (or ) shaders, which determine the color and other properties of individual ; shaders, which generate or modify ; and compute shaders, which support general-purpose GPU beyond traditional rendering.

Historical development

The origins of shading languages trace back to the early 1980s, when researchers at (now ) developed foundational concepts for procedural shading to overcome the limitations of fixed lighting models like Gouraud and . In 1984, Rob Cook introduced "shade trees," a system for composing complex surface appearances using a tree-like structure of procedural nodes, which laid the groundwork for programmable shading in offline rendering. This culminated in 1988 with 's release of the RenderMan Shading Language (RSL) as part of the , enabling artists and programmers to define custom shaders for photorealistic film rendering, such as in early computer-animated films like (1995). During the , shading languages evolved to support more sophisticated procedural effects in (VFX) pipelines, transitioning from low-level procedural descriptions to higher-level abstractions suitable for production environments. Side Effects Software introduced the Vector Expression (VEX) language with Houdini 4.0 (2000), designed for efficient, parallelizable and in offline rendering workflows, allowing of textures, displacements, and lighting for films and games. This period also saw growing interest in extensible for tools like RenderMan, but the focus remained on offline, CPU-based rendering rather than applications. The 2000s marked a pivotal shift toward shading with the advent of programmable GPUs, driven by hardware advancements and the need for dynamic graphics in games and simulations. NVIDIA's 3 GPU (2001) introduced the first consumer-level programmable vertex shaders, replacing fixed-function pipelines and enabling basic custom on GPUs. In 2002, the 's ARB_vertex_program and ARB_fragment_program extensions provided low-level assembly languages for , while NVIDIA launched the high-level (C for Graphics) language, inspired by C, to simplify GPU programming; Microsoft simultaneously introduced HLSL with 9.0 for similar high-level abstractions on Windows platforms. By 2004, 2.0 standardized the (GLSL), unifying vertex and fragment processing under a single, C-like syntax managed by the , which facilitated widespread adoption in rendering. In the 2010s, shading languages emphasized API-specific optimizations and interoperability, reflecting the diversification of graphics ecosystems. Pixar and Sony Pictures Imageworks released the Open Shading Language (OSL) in 2009 as an open standard for production rendering, supporting shader networks across tools like RenderMan and Arnold without proprietary lock-in. Apple introduced the Metal Shading Language (MSL) in 2014 alongside the Metal API for iOS and macOS, providing a C++-based syntax tightly integrated with low-overhead GPU dispatch. Microsoft advanced HLSL with Shader Model 4.0 in DirectX 10 (2006), adding structured buffers and geometry shaders, though full high-level features had emerged earlier; these updates prioritized efficiency for increasingly complex real-time scenes. The Khronos Group continued standardization efforts, evolving GLSL through versions like GLSL 4.50 (2014) to support compute shaders and tessellation. The 2020s have seen shading languages adapt to web, cross-platform, and AI-driven paradigms, with a push toward unified standards to reduce fragmentation. The was specified in 2021 as part of the by the W3C and Khronos, offering a Rust-inspired syntax for browser-based GPU compute and graphics, with updates in 2025 for broader integration. open-sourced in 2018 as a metaprogramming language for cross-API shader development (targeting , , and Metal), which gained momentum through Khronos' Initiative launched in 2024, featuring major 2025 updates for generics and specializations to streamline multi-backend deployment. Emerging trends include AI integration via neural rendering, such as 's RTX Neural Shading (announced 2025), which uses differentiable shading languages like to train neural networks approximating complex shaders for real-time performance gains. in 2025, including Eurographics papers on advancements, explores direct compilation of C++ to shaders (e.g., via extended ), aiming to eliminate language silos. Key events include the Khronos Group's inaugural Shading Languages Symposium at 2025, fostering discussions on future standards for GLSL, HLSL, WGSL, and .

Offline rendering shading languages

RenderMan Shading Language

The RenderMan Shading Language (RSL) was developed by in 1988 as a core component of the , enabling procedural definition of material appearances for photorealistic rendering in film production. Originating from earlier work at on shading concepts, including Rob Cook's 1984 Shade Trees system for programmable shading, RSL was refined by Pixar engineers like to support the Reyes rendering architecture. The language launched with the RenderMan interface in May 1988 and gained prominence through its use in Pixar's early shorts, such as Tin Toy (1988), before powering the first fully computer-animated feature film, (1995), which employed over 1,500 custom RSL shaders alongside 2,000 maps to achieve realistic toy surfaces and environments. RSL features a C-like syntax that facilitates accessible shader programming, with keywords for declaring shader types (e.g., surface, displacement, light, volume) and built-in functions for geometric queries, illumination calculations, and procedural patterns. Shaders are structured as functions that compute color, opacity, and displacement based on inputs like surface normals, position, and light directions; for instance, a basic marble surface shader might use the noise() function to generate veining patterns modulated by parameters such as diffusion (Kd) and ambient coefficients (Ka). This supports hierarchical shading through parameter passing between shaders on the same primitive, allowing complex materials like skin or fabric by layering subsurface scattering and texture perturbations without recursion in early implementations. Shaders compile to platform-independent object files (e.g., .slo on Pixar systems) for efficient execution during rendering. Key capabilities of RSL emphasize offline rendering quality, including support for ray tracing via the trace() function to simulate effects like soft shadows and caustics, integrated with the Reyes pipeline for micropolygon-based evaluation. It enables realistic material modeling through procedural noise for organic textures (e.g., bumpy skin or veined marble) and custom light shaders for area lighting, as demonstrated in early demos like procedural surface effects from 1989. Later extensions incorporated bidirectional scattering distribution functions (BSSRDFs) for translucent materials, enhancing subsurface light transport in volumes and surfaces. These features, combined with RenderMan Pro Server integration, allow for high-fidelity outputs in production environments focused on ray-traced rather than interactive previews. RSL became the de facto standard for shading in visual effects, adopted by studios including , (ILM), and for films ranging from to modern productions like The Creator (2023), where it facilitated complex material layering for stylized and photorealistic assets. Its impact endures through influence on subsequent languages, such as (OSL), which extends RSL's procedural paradigms for broader compatibility. While traditionally focused on CPU-based batch rendering with compilation to , RSL in modern RenderMan (as of version 27 in 2025) supports GPU acceleration through the XPU hybrid renderer, though with potential limitations for complex shaders.

Houdini VEX

VEX, or Vector EXpression language, was introduced by Side Effects Software in Houdini 4.0 in as a high-performance optimized for procedural workflows in and . Designed primarily for efficient and , VEX draws inspiration from while incorporating elements from C++ and the RenderMan Shading Language to facilitate development and custom node creation within Houdini's node-based environment. Its origins stem from the need to accelerate computations in complex simulations and rendering tasks, making it a core component for rather than a general-purpose scripting tool. VEX employs a C-like syntax with a strong emphasis on mathematical operations, including built-in functions for generation, fractals, and manipulations essential for . It supports the creation of shaders for surfaces, volumes, displacements, lights, and fog in Houdini's renderer, as well as particle systems and custom attributes on . Integration with Houdini's Surface Operators (SOPs) and Operator (VOP) networks allows users to visually prototype VEX code, which compiles into executable shaders, enabling seamless transitions between visual scripting and textual programming. Key features include context-specific programming—such as surface or volume contexts—and high efficiency, where VEX code executes thousands of times faster than equivalent expression-based alternatives in Houdini. In visual effects production, VEX is widely applied for offline rendering tasks, including procedural shading for complex phenomena like fluid dynamics and explosions in feature films. For instance, it enables to add intricate surface details to and custom attribute manipulation for simulating realistic behaviors in particles and volumes, as seen in high-profile VFX sequences involving effects. These capabilities make VEX indispensable for creating scalable, artist-driven procedural assets in pipelines focused on film-quality output. VEX has evolved significantly since its , with ongoing updates enhancing its across Houdini versions up to 21.0 in 2025. Notable advancements include GPU starting in Houdini 20.0 (2023), which leverages hardware for faster simulations, and further refinements in Houdini 21.0, such as the Copernicus GPU-accelerated Pyro solver that utilizes VEX for real-time procedural shading of fire and smoke effects. These developments have expanded VEX's role in modern workflows, incorporating adaptive domains and tools for more efficient authoring. VEX's primary strengths lie in its exceptional performance for simulation-heavy tasks and its extensibility through reusable code snippets, allowing artists to build modular, high-speed procedural systems without sacrificing flexibility. This efficiency, combined with deep ties to Houdini's procedural paradigm, positions VEX as a powerful tool for VFX artists seeking rapid iteration in and effects creation.

Open Shading Language

Open Shading Language (OSL) is an open-standard programming language designed for writing reusable, renderer-independent shaders primarily for offline rendering in visual effects and animation production. Developed by starting in 2009, it was publicly released as on January 14, 2010, under the New BSD license to facilitate collaboration across the industry. OSL builds on foundational concepts from the RenderMan Shading Language, such as procedural , but extends them for modern physically-based rendering pipelines. Its adoption has grown steadily, with integration into major renderers including Pixar's RenderMan (for patterns), Autodesk's (for full materials), Blender's Cycles (since version 2.81 in 2019), and OTOY's OctaneRender (with enhanced support in the 2025 release for ). OSL has been used in over 100 films, including (2012) for procedural material effects and (2019) for complex in visual effects sequences. OSL features a C-like that emphasizes simplicity and expressiveness, allowing shader authors to define patterns, displacements, volumes, and surfaces without direct access to scene geometry or lights, which are handled by the host renderer. Key elements include radiance closures for encapsulating light transport behaviors, enabling deferred evaluation of scattering during ray tracing, and support for bidirectional scattering distribution functions (BSDFs) to model realistic material interactions like , , and . The language also facilitates layered materials through composable closure primitives and pattern generation via built-in functions for noise, fractals, and procedural textures, such as custom variants for organic surfaces. For instance, a basic might combine a BSDF closure with Fresnel weighting to simulate transparent without explicit ray intersection code. are compiled into a portable format that multiple renderers can interpret, promoting and reducing . A core strength of OSL lies in its design for safe, efficient execution in parallel rendering environments: shaders are pure functions with no mutable global state or side effects, allowing the renderer to reorder evaluations, results, or distribute computations across CPU cores without conditions. This renderer-neutral approach, combined with support for user interfaces, makes OSL ideal for production pipelines where shaders must be shared across tools. However, OSL is optimized exclusively for offline rendering and lacks built-in support for optimizations like GPU-specific instructions or low-latency branching, limiting its use in interactive applications. In , for example, OSL shaders require CPU rendering, as GPU backends like do not fully support the system.

Other offline languages

In addition to the prominent offline shading languages, several historical and niche variants have contributed to the evolution of procedural shading for high-fidelity rendering. The Blue Moon Rendering Tools (BMRT), developed in the 1990s by Larry Gritz, implemented a RenderMan-compliant shading language with built-in support for ray tracing and global illumination, extending the standard to handle complex light interactions without requiring external plugins. This approach influenced subsequent RenderMan-based systems by demonstrating practical integration of advanced ray-tracing primitives directly into shader code. Similarly, NVIDIA's Gelato Shading Language, introduced in the early 2000s, featured a C++-like syntax tailored for defining materials and lighting in GPU-accelerated offline renderers. Earlier examples include Pixar's pioneering surface shading techniques from the , which predated the formal RenderMan Shading Language (RSL) and laid foundational concepts for programmable descriptions in the REYES rendering architecture. In more application-specific contexts, tools like 3ds Max's Slate Material Editor provide procedural shading networks, allowing node-based construction of complex materials that interface with shading languages for offline renderers, though not as a standalone language. These offline languages share key characteristics, prioritizing rendering quality and over computational speed, often through support for unbiased ray tracing and physically based models. They are typically closely coupled to proprietary renderers, such as Pixar's PRMan for RSL extensions or Chaos Group's for custom procedural integrations, enabling seamless workflow within specialized production environments. In modern applications as of 2025, extensions to languages like the (OSL) have emerged for AI-driven , where models assist in creating and modifying custom shaders for dynamic material synthesis in offline pipelines. This niche leverages OSL's procedural strengths to automate texture and surface variations, enhancing efficiency in and visualization workflows.

Low-level real-time shading languages

ARB assembly language

The ARB , also known as ARB vertex program and ARB fragment program language, is a low-level, assembly-style shading language developed for programmable in . It provides direct control over transformations and fragment shading through a set of fixed-function opcodes and register-based operations, serving as an early standard for GPU programmability before the advent of higher-level abstractions. Introduced by the OpenGL Architecture Review Board (ARB) in 2002, the language emerged through the ARB_vertex_program extension (approved June 18, 2002) and ARB_fragment_program extension (approved September 18, 2002), requiring 1.3 or later for compatibility. These extensions standardized vendor-specific innovations, such as NVIDIA's NV_vertex_program and ATI's fragment shader capabilities, amid the rollout of GPU hardware like the FX and 9700 series. They formed a foundational component of OpenGL 2.0's programmability features, enabling developers to replace fixed-function pipelines with custom code for real-time rendering. The syntax resembles assembly code, with programs defined as ASCII strings prefixed by "!!ARBvp1.0" for vertex programs or "!!ARBfp1.0" for fragment programs, and terminated by "END". Key features include a repertoire of opcodes for (ALU) operations, such as (move), MUL (multiply), ADD (add), DP3/DP4 (dot products), and (texture fetch), alongside scalar and vector manipulations on 4-component floating-point registers. Vertex programs support up to 128 instructions, utilizing at least 12 temporary registers, 96 program parameters, and 1 address register for relative addressing. Fragment programs limit instructions to 72 total (48 ALU + 24 texture), with at least 16 temporaries and 24 parameters, emphasizing texture sampling and color/depth outputs. These elements allow precise control over computations like lighting coefficients (via LIT) or cross products (via XPD), but execution follows a strictly linear sequence without branching. In practice, ARB assembly enabled pioneering real-time effects, such as , by facilitating per-vertex normal transformations and per-fragment calculations that simulated surface details without additional . Its low-level nature made it ideal for optimizing early GPU workloads in applications like games and simulations during the early . Despite its innovations, the language's verbosity and susceptibility to errors—stemming from manual register management and lack of initial support for loops or conditionals—limited its scalability for complex shaders. These flow control features were later added via extensions like NV_gpu_program4, but the core ARB design remained rigid. As a precursor to the (GLSL), it influenced modern shader paradigms by establishing register-based GPU programming concepts. By 2025, ARB assembly has been deprecated in favor of high-level languages like GLSL for new development, with core profiles (3.0+) excluding it from forward-compatible contexts. However, it persists in legacy drivers and compatibility profiles for maintaining older applications, ensuring in environments like scientific and systems.

DirectX Shader Assembly Language

DirectX Shader Assembly Language (DirectX ASM) was introduced by with 8 in November 2000, primarily to support programmable shaders that allowed developers to transform data beyond fixed-function pipelines. This low-level assembly format enabled fine-grained control over GPU operations, marking a shift toward programmable in rendering. With 9 in 2002, the language expanded to include shaders, facilitating per-fragment computations for more advanced effects. ASM serves as an , often generated by compiling higher-level code like HLSL into binary objects for execution. The syntax of ASM is mnemonic-based, resembling traditional CPU but tailored for GPU parallelism and operations. Key instructions include def for defining constants, dcl for declaring inputs and outputs (e.g., dcl_position v0), and arithmetic operations like mad for multiply-add computations (e.g., mad r0, v1, c0, v2). components are accessed via swizzles, such as .xyzw or .rgba, allowing selective manipulation (e.g., mov r0.xyz, v1.zyx). are profiled by type and version, denoted as prefixes like vs_1_1 for vertex shader model 1.1 or ps_2_0 for pixel shader model 2.0, which dictate available instructions and register counts. A basic vertex shader example might appear as:
vs_1_1
def c0, 1.0f, 2.0f, 3.0f, 4.0f
dcl_position v0
dcl_normal v1
mov oPos, v0
mad oD0, v1, c0.x, v0
This declares a position input, defines a constant, and outputs a transformed position and diffuse color. In applications, DirectX ASM powered real-time effects in early 2000s games, such as those on the original Xbox console, which leveraged DirectX 8 and 9 for hardware-accelerated rendering. It enabled techniques like per-pixel lighting and bump mapping by allowing pixel shaders to compute lighting per fragment rather than per vertex, improving visual fidelity in titles like Halo: Combat Evolved. These capabilities were crucial for the transition from fixed-function to programmable GPUs, supporting dynamic environments in PC and console gaming. Over time, ASM has been largely superseded by the higher-level HLSL since 9, as developers favored its C-like syntax for productivity, though ASM remains relevant for low-level optimizations and debugging compiled shaders. Tools like the fxc.exe , part of the legacy SDK, assemble ASM code into binary formats and continue to receive updates through the Shader Compiler project for compatibility with 12 as of 2025. This evolution parallels contemporary efforts in OpenGL's ARB , both representing early low-level programming paradigms. Despite its power, ASM is inherently platform-specific to Windows and ecosystems, limiting portability compared to cross-platform alternatives. Its verbose, instruction-heavy nature also makes it cumbersome for complex shaders, often requiring dozens of lines for operations that higher-level languages handle succinctly.

High-level real-time shading languages

OpenGL Shading Language

The (GLSL) is a high-level, C-like shading language developed by the to enable programmable shading within the graphics API. It was first standardized in 2004 alongside 2.0, which introduced vertex and fragment shaders to allow developers to replace the fixed-function with custom code for processing. Subsequent versions have aligned with releases, progressing from GLSL 1.10 (2004) to the current GLSL 4.60, corresponding to 4.6 released in July 2017, with a specification revision 4.60.8 issued in August 2023 to incorporate clarifications and extensions. For mobile and embedded platforms, GLSL ES variants provide tailored support, such as GLSL ES 3.20 for 3.2, which optimizes for resource-constrained devices while maintaining core compatibility. GLSL employs a syntax closely resembling C, with strict typing for scalars (e.g., float, int), vectors (e.g., vec3), matrices (e.g., mat4), and structures, alongside preprocessing directives like #version 460 to specify the language version. Key elements include uniform qualifiers for read-only global variables that receive data from the application (e.g., uniform vec4 lightPos;), in and out qualifiers (replacing deprecated varying) for passing data between shader stages, and built-in variables such as gl_Position in vertex shaders for output positions or gl_FragColor in fragment shaders for final colors (though deprecated in core profiles favoring explicit outputs). Built-in functions like texture(sampler2D tex, vec2 coord) enable texture sampling, while control structures (e.g., loops, conditionals) and operators support complex computations. GLSL supports shaders across all OpenGL pipeline stages—vertex, tessellation control/evaluation, geometry, and fragment—with compute shaders added in version 4.30 (2012) for general-purpose GPU tasks outside the graphics pipeline, using workgroups and built-ins like gl_WorkGroupID. This versatility enables key real-time rendering techniques, such as deferred rendering, where passes populate buffers for subsequent computations in fragment or compute shaders, optimizing for scenes with multiple lights. GLSL's design ensures cross-platform portability, running on desktops via and mobiles via , with minimal adaptations needed between variants. In practice, GLSL is ubiquitous in game development; targets it for OpenGL-based platforms by compiling shaders to GLSL, while [Unreal Engine](/page/Unreal Engine) translates its HLSL code to GLSL for non-DirectX renders. As of 2025, GLSL benefits from deepened integration through SPIR-V , with updates to SPIR-V extended instructions (revision 16 as of 2025) enhancing shader portability and 1.4 driver support. In contrast to NVIDIA's language, which was vendor-specific and discontinued after 2012, GLSL serves as the official, open-standard language for , free from hardware dependencies and directly maintained by the for broad interoperability.

High-Level Shading Language

The High-Level Shading Language (HLSL) is a C-like programming language developed by for creating shaders within the graphics . Introduced with 9 in December 2002, HLSL enables developers to program the programmable pipeline by compiling high-level code into or instructions executable on the GPU. HLSL's syntax supports constructs, including techniques and passes within an effect framework to facilitate multi-pass rendering pipelines. Key features include semantic annotations for input and output variables, such as for positions and TEXCOORD for coordinates, which ensure proper flow between stages. The language provides built-in intrinsics for mathematical operations, like the function for matrix-vector , and has been extended to support raytracing shaders introduced in (DXR) in 2018. HLSL is primarily applied in Windows-based gaming and graphics applications, powering shaders in DirectX 12 titles that leverage advanced GPU features for real-time rendering. It serves as the default shading for engine projects targeting Windows platforms via . The has evolved significantly, with HLSL Model 6.0 and later versions (introduced in the ) adding wave intrinsics to enable SIMD operations across GPU lanes for improved parallelism. Model 6.8 (introduced in 2024) further enhances support for mesh shaders, allowing more efficient in modern rendering pipelines. One of HLSL's strengths lies in its effect framework, which simplifies the management of multi-pass rendering by encapsulating state changes, annotations, and code into reusable techniques.

C for Graphics

Cg, short for "C for Graphics," is a high-level shading language developed by in collaboration with and introduced on June 13, 2002, as a means to simplify programming of programmable hardware. Designed as a C-like language for effects, it served as an alternative and companion to Microsoft's High-Level Shading Language (HLSL) for 9, supporting both and APIs across platforms including Windows, , OS X, and . The language targeted and shaders on GPUs from and other vendors, with initial profiles such as vs_1_1 for shaders and ps_1_1 for shaders corresponding to 8-level hardware capabilities. The syntax of Cg closely mirrors , incorporating vector and matrix types, swizzles, and a of built-in functions for operations like transformations and , while adding extensions for GPU-specific features such as texture sampling and flow control. It supports data-dependent branching in vertex shaders but encourages branchless techniques using operations or conditionals like step() to optimize on hardware, avoiding costly divergence in execution paths. Cg programs compile via the cgc compiler to intermediate targets including GLSL for , HLSL for , or low-level assembly, enabling portability across APIs without rewriting shaders. The accompanying CgFX format extends this by encapsulating effects files with techniques, passes, parameters, and state annotations, facilitating multi-pass rendering and hardware fallback mechanisms for varying GPU capabilities. In the early 2000s, played a key role in bridging graphics APIs, allowing developers to author shaders once and deploy them across and ecosystems, which was particularly useful in game development frameworks like Microsoft's XNA where HLSL compatibility enabled Cg-derived effects. It was integrated into professional tools such as through dedicated plugins, enabling artists to create hardware-accelerated shaders for real-time previews and rendering. positioned Cg with a vendor-neutral intent to standardize high-level shading, though its development and toolkit were primarily NVIDIA-driven, influencing subsequent languages by promoting C-like abstractions for GPU programming. Development of Cg ceased in 2012 with the deprecation of the cgc compiler and no further updates to the toolkit, which reached its final version 3.1; however, as of 2025, NVIDIA drivers continue to support legacy Cg execution on compatible GPUs, maintaining backward compatibility for existing applications despite the shift to modern shading languages like GLSL and HLSL.

Metal Shading Language

The Metal Shading Language (MSL) is a high-level, C++11-inspired programming language developed by Apple for writing shaders that execute on the Metal graphics and compute API. Launched alongside Metal in June 2014 at WWDC and first available with iOS 8 and macOS 10.10 later that year, MSL enables developers to create efficient, low-overhead graphics and compute programs tailored to Apple hardware.) It draws from modern C++ features while incorporating GPU-specific extensions, allowing for expressive code that compiles to optimized machine code via Clang and LLVM backends. MSL's syntax emphasizes pipeline stages through attribute qualifiers, such as [[stage_in]] for shader inputs and [[color(0)]] for fragment outputs, facilitating clear declaration of interfaces. Key features include support for argument buffers, which enable passing complex, dynamic data structures like arrays of textures or buffers without fixed limits, reducing overhead compared to traditional bindings. Additionally, raster order groups allow fragment s to process pixels in a deterministic order for techniques like , using attributes like [[raster_order_group(0)]]. MSL integrates seamlessly with Metal Performance Shaders (), a of pre-optimized kernels for tasks like image processing and matrix operations, where developers can embed MPS calls directly in custom s for hybrid compute workflows. Designed for real-time rendering and compute on , MSL powers GPUs in A-series chips (e.g., A17 Pro in ) and M-series SoCs (e.g., M3 in ), delivering high-performance graphics with minimal driver intervention. Ray tracing capabilities were added in Metal 3, announced at WWDC 2022 and released with and , supporting hardware-accelerated ray-triangle intersections and acceleration structures for realistic lighting and reflections in real-time applications. Updates to MSL include version 3.1, available since and macOS 14 in September 2023, which enhances compute shaders with features like bfloat16 data types for workloads and improved global variables for kernel, , and object shaders to streamline . In 2025, Metal 4 introduced extensions building on shaders—initially added in Metal 3 for programmable —with refinements like function buffers for more flexible ray tracing and control over acceleration structure optimization, further boosting efficiency on latest . MSL is exclusively used within the , powering user interfaces in for declarative graphics rendering and experiences in ARKit, where shaders handle spatial mapping and in . Its tight integration with Apple's frameworks ensures optimized performance for mobile and desktop apps, though it remains proprietary and unavailable on non-Apple platforms.

WebGPU Shading Language

The Shading Language (WGSL) is the normative language defined by the (W3C) for the , with its first public working draft published in May 2021. Developed by the GPU for the Web Group, WGSL draws syntactic and safety influences from , emphasizing and explicit memory management to mitigate common graphics programming errors in a environment. This design choice supports secure, sandboxed GPU execution without requiring native extensions, enabling cross-platform compatibility across web . WGSL programs are structured as modules containing global declarations, functions, and entry points marked by attributes such as @vertex for vertex shaders and @fragment for fragment shaders, with additional support for @compute entry points to facilitate general-purpose GPU computing. Core features include strongly typed scalars (e.g., f32, i32), vectors like vec4<f32>, matrices, arrays, and structures, alongside built-in variables such as position for vertex outputs and functions like textureSample for 2D sampling. Compute shaders integrate seamlessly with Web Workers, allowing off-main-thread execution for tasks like machine learning inference, while the language's module scope ensures all shaders in a pipeline share a unified namespace for uniforms and storage buffers. WGSL's primary purpose is to power graphics and compute in web applications, such as 3D rendering in engines like , where it enables high-performance pipelines without transpilation overhead. By providing a secure, extension-free to modern GPU , it facilitates sandboxed operations that prevent unauthorized , making it suitable for and interactive visualizations. Recent specifications, including the March 2025 Candidate Recommendation Draft, have enhanced WGSL with refined storage classes for better memory layout control and initial support for subgroups to optimize operations in compute shaders. Adoption has grown steadily, with full support in 113 and later versions since April 2023, alongside implementations in and , driving its use in web games for advanced rendering effects and in browser-based for accelerated tensor operations.

Other high-level languages

The Shader Language (PSSL) is a high-level, C-like shading language developed by , introduced in 2013 alongside the console and subsequent generations. Designed specifically for the low-level Graphics Native (GNM) API, PSSL provides direct GPU access while incorporating extensions that unlock PlayStation hardware features, such as advanced and compute capabilities, and maintains partial compatibility with PC-oriented languages like HLSL for easier porting. This tailoring enables developers to optimize real-time rendering in console exclusives, balancing abstraction with performance-critical control over shader execution. Adobe's Pixel Bender, launched in 2008, offered a high-level, kernel-based programming model for creating image processing effects and shaders, primarily targeted at and Adobe Integrated Runtime (AIR) applications. Developers wrote portable code in a simplified syntax that compiled to GPU-executable , supporting and fragment operations for real-time filters in web and desktop environments. Complementing it, the Adobe Graphics Assembly Language (), introduced around 2011 for 's Stage3D , provided a low-level representation of shaders, allowing fine-tuned and fragment programs to be uploaded directly to the GPU. Both were deprecated following Adobe's end-of-life for in 2020, limiting their ongoing use but preserving their role in early cross-platform graphics experimentation. Other notable high-level shading languages include Unity's ShaderLab, a declarative emerging in the early that wraps HLSL or code to define shader structure, properties, and variants for seamless multi-platform deployment in the Unity game engine. Similarly, Unreal Engine's Unreal Shader Files (USF) extend HLSL as a platform-agnostic format for authoring vertex, pixel, and compute shaders, with 2025 updates integrating enhanced support for features like Nanite's virtualized micropolygon geometry to improve scalability in large-scale rendering. These languages share common themes of API-specific optimization, where syntax and features are customized to exploit target hardware efficiencies, such as reduced overhead in console pipelines or engine-integrated compilation. For instance, earlier efforts like AMD's —a C extension for stream computing on GPUs developed in the mid-2000s—emphasized parallel data processing but have largely declined in adoption, supplanted by standardized alternatives like due to evolving hardware abstractions.

Shader translation and interoperability

Translation tools and compilers

Translation tools and compilers for shading languages address the fragmentation caused by diverse , such as , , , and Metal, which each require shaders in specific languages like HLSL, GLSL, or MSL. These tools enable developers to write shaders in one high-level language and automatically convert them to compatible formats for different platforms, reducing the need for manual rewriting and minimizing errors from API-specific syntax. For instance, tools like HLSLcc translate HLSL code to GLSL or Metal Shading Language (MSL), facilitating deployment on -based systems or Apple devices. Key tools include the legacy NVIDIA Cg compiler, which targeted multiple profiles across OpenGL and DirectX by compiling Cg shaders to assembly-like outputs for early programmable GPUs. More modern options encompass Khronos Group's glslangValidator, a reference front-end that compiles GLSL, ESSL, and partially HLSL to SPIR-V bytecode, serving as a validator and translator in Vulkan and OpenGL ecosystems. Google's shaderc library builds on glslang and DirectX Shader Compiler (DXC) to compile both GLSL and HLSL directly to SPIR-V, supporting runtime and build-time workflows in cross-API applications. Microsoft's DXC, the official HLSL compiler, generates DXIL for DirectX while also outputting SPIR-V for Vulkan compatibility and Metal libraries via conversion flags. Additionally, Microsoft's ShaderConductor provides end-to-end cross-compilation from HLSL to GLSL, ESSL, MSL, or legacy HLSL, leveraging DXC for intermediate representation and SPIRV-Cross for source regeneration. Translation workflows typically involve either source-to-source conversion, where tools like HLSLcc or ShaderConductor parse the input, rewrite syntax, and emit equivalent code in the target , or bytecode generation, as in DXC and glslangValidator, which produce intermediate binaries like SPIR-V for further processing. Challenges arise from semantic differences between languages, such as varying swizzle notations—HLSL favors .xyzw for components while GLSL traditionally uses .rgba—requiring translators to map these accurately to avoid discrepancies in operations. Other issues include handling platform-specific intrinsics, precision qualifiers, and conventions, which can lead to variations if not resolved during . In 2025, tools like DXC continue to evolve with enhanced SPIR-V support for ray tracing and cross-API features, while ShaderConductor's updates enable efficient HLSL-to-MSL pipelines for . These advancements benefit cross-platform development, as seen in game engines like , where HLSL shaders are automatically translated to target languages, allowing a single codebase to run on Windows, macOS, mobile, and web platforms without per-API shader variants. This portability streamlines workflows, cuts development time, and ensures consistent rendering across ecosystems.

Intermediate representations

Intermediate representations (IRs) in shading languages serve as standardized binary or textual formats that abstract from specific high-level source languages and low-level GPU hardware implementations, promoting portability and interoperability across graphics . By decoupling the front-end of high-level shaders from back-end optimizations, IRs allow developers to target multiple platforms without rewriting for each vendor's ecosystem. This approach minimizes redundancy in driver development and enables cross-validation tools to analyze shaders independently of the underlying . SPIR-V, developed by the , emerged as a key standard in 2014, initially supporting 2.0 and later integrated with for representing graphical shaders and compute kernels. The specification defines SPIR-V as a binary format composed of modules that encapsulate entry points, capabilities, and instructions via opcodes handling , arithmetic operations, memory access, and execution models. SPIR-V version 1.6 was released on December 16, 2021, with subsequent revisions including 1.6.5 on January 30, 2025, and 1.6.6 on July 10, 2025, incorporating clarifications, bug fixes, and support for new extensions like enhanced operations. High-level shading languages such as GLSL and HLSL are commonly compiled to SPIR-V, facilitating direct loading by and drivers while bypassing runtime compilation overhead. This process supports intermediate validation and optimization passes using tools like SPIR-V Tools, which can perform and specialization constant propagation. In implementations, the Tint compiler—primarily for WGSL—integrates SPIR-V as an intermediate target for backends like , enabling efficient shader translation and leveraging SPIR-V's structure for cross-platform deployment. Other notable IRs include DXIL, Microsoft's DirectX Intermediate Language introduced in 2017 for DirectX 12, which represents HLSL shaders in a format derived from bitcode to ensure verifiable and optimized execution on Windows hardware. Legacy formats, such as NVIDIA's bytecode generated by the Cg compiler, once provided a proprietary intermediate step for older GPU architectures but have been deprecated since the Cg Toolkit's final release in , with no active support thereafter. The primary advantages of IRs like SPIR-V include reduced complexity for GPU drivers, as vendors focus on back-end optimizations rather than parsing diverse source languages, leading to faster driver development and fewer bugs. These formats also enhance extensibility, supporting advanced features such as ray tracing through dedicated capabilities and instructions, while enabling ecosystem-wide tools for debugging and performance analysis across APIs.

Cross-platform shading languages

Cross-platform shading languages address the fragmentation caused by API-specific shading languages, such as for / and for , which require developers to maintain separate codebases for different platforms and lead to increased complexity in large-scale projects. These languages introduce modern programming constructs like modules for code organization, generics for reusable abstractions, and for , enabling a unified approach to shader development across graphics APIs. Slang, an open-source shading language released in 2018 and primarily developed by with contributions from , exemplifies this paradigm with its C++-like syntax augmented by decorators such as @shader to specify entry points and stages. In November 2024, the launched an initiative to host and advance the Slang compiler under open governance. It compiles to multiple targets including GLSL, HLSL, SPIR-V, Metal Shading Language, and WGSL, facilitating deployment on desktop, mobile, and web platforms without rewriting s. Slang supports AI-accelerated rendering through differentiable features in SLANG.D, introduced in 2023, which enables for s in pipelines, alongside integration with 1.4 for enhanced bindless resource handling via DescriptorHandle extensions as of February 2025. Key features of Slang include type safety through early compile-time checks and cross-target execution, allowing shaders to be optimized for diverse hardware while maintaining a single source. For instance, developers can write unified compute shaders that execute on both desktop GPUs via and web browsers via , leveraging generics for parameterized kernels and modules to encapsulate reusable components like material libraries. Beyond , 2025 research has explored direct compilation of C++ to shaders, bypassing traditional shading languages altogether; the compiler, presented at High-Performance 2025, translates standard C and C++ code into Vulkan-compatible SPIR-V using and a lightweight library, enabling seamless integration of CPU-GPU codebases. Similarly, Rust-based prototypes like Rust-GPU have advanced, with tools GLSL shaders to Rust code that compiles to SPIR-V, supporting traits and generics for safe, high-performance programming across and . These languages have demonstrated impact in production environments by streamlining shader maintenance; Slang's modular design reduces code duplication and boilerplate in large codebases, as evidenced by its adoption in real-time rendering pipelines for improved developer productivity. Slang builds on intermediate representations like SPIR-V to achieve this multi-target compatibility.

References

  1. [1]
    [PDF] Shading Languages - Research Unit of Computer Graphics | TU Wien
    Shading Languages provide a highly flexible approach for creating visual structures in computer imagery. ... Procedures written in this shading language are ...
  2. [2]
    [PDF] The OpenGL ES Shading Language - The Khronos Group
    May 12, 2009 · The OpenGL ES Shading Language includes data types for generic 2-, 3-, and 4-component vectors of floating-point values, integers, or Booleans.
  3. [3]
    [PDF] History-of-graphics.pdf
    History of computer graphics. CS 248 - Introduction to Computer ... – Perlin (1985) - shading languages. – Hanrahan and Lawson (1990) - RenderMan.
  4. [4]
    Introduction to Slang: The Next Generation Shading Language
    Aug 10, 2025 · This hands-on lab introduces Slang, an open-source, open governance shading language hosted by Khronos that simplifies graphics development ...
  5. [5]
    The OpenGL® Shading Language, Version 4.60.8 - Khronos Registry
    Aug 14, 2023 · These languages are used to create shaders for each of the programmable processors contained in the API's processing pipeline. Currently, these ...
  6. [6]
    What is a shader? - The Book of Shaders
    That means extra fast trigonometrical and matrix operations - as fast as electricity can go. What is GLSL? GLSL stands for openGL Shading Language, which is ...
  7. [7]
    A Review of Shader Languages - Alain Galvan
    Feb 12, 2022 · Shaders execute on a Single-Instruction-Multiple-Data (SIMD) architecture, where groups of processing cores execute the same instruction across ...Language Features · HLSL · Offline
  8. [8]
    [PDF] A Brief History of Shaders
    1993: RenderMan wins a Technical Academy Award. History of Shaders, III ... 2004: OpenGL 2.0 / GLSL 1.10 includes Vertex and Fragment Shaders. History of ...
  9. [9]
    Milestones:The Development of RenderMan® for Photorealistic ...
    Dec 8, 2023 · The fifth technique is "shading languages," which includes the RenderMan® Shading Language (RSL) invention to enable shaders to be easily ...
  10. [10]
    Khronos Group Launches Slang Initiative, Hosting Open Source ...
    Nov 21, 2024 · This initiative will oversee and advance the open-source Slang shading language and compiler, building on 15 years of research, development, and ...
  11. [11]
    Announcing the Latest NVIDIA Gaming AI and Neural Rendering ...
    Aug 18, 2025 · Today at Gamescom 2025, NVIDIA unveiled updates to NVIDIA RTX neural rendering and NVIDIA ACE generative AI technologies that enable ...
  12. [12]
    Khronos Group Announces Inaugural Shading Languages ...
    Aug 6, 2025 · A first-of-its-kind event to explore the future of shading languages and real-time graphics programming. Beaverton, OR – August 06, ...
  13. [13]
    The Story Behind Pixar's RenderMan CGI Software - IEEE Spectrum
    Mar 21, 2024 · In 1988, with the help of computer graphics pioneer Hanrahan, Pixar scientists designed a new interface. Hanrahan helped refine shading language ...
  14. [14]
    [PDF] Toy Story - Computer Graphics World
    The Shading Language: a language for describing the appearance ... there are more than. 1500 RenderMan shaders and 2000 painted texture maps in Toy Story.
  15. [15]
    RenderMan at 30: A Visual History - VFX Voice -
    Nov 27, 2018 · The name 'RenderMan' was coined out of a conversation that founding Pixar employee Pat Hanrahan had about futuristic rendering software that was ...
  16. [16]
    About the RenderMan Interface
    Included with the RenderMan Interface is a specification of the RenderMan Shading Language. This language has a syntax similar to C's, and it enables the ...About The Renderman... · The Renderman Shading... · Shaders And Parameterlists
  17. [17]
    [PDF] The RenderMan Interface - Paul Bourke
    Ray Tracing The ability to evaluate global illumination models using ray tracing. (See the section on Shading and Lighting Functions, p. 141.) Global ...
  18. [18]
    Stylization at Pixar - Pixar's RenderMan | Stories
    May 24, 2023 · To support this flexibility, RenderMan created the RenderMan Shading Language, or RSL for short. Today, RenderMan uses Open Shading Language ...Materials And Surfacing · Renderman Discord · Simulation And Effects
  19. [19]
    Rsl - Shading Language Overview - CG References & Tutorials
    The extension of the shader file will vary from one RenderMan complient system to another. For example, Pixar's system uses ".slo" as the file extension for ...
  20. [20]
    [PDF] Towards Bidirectional Path Tracing at Pixar
    To understand where those restrictions come from and what can be done to overcome them, we will first present an overview of ray tracing and Multiple.
  21. [21]
    RenderMan at ILM | The Creator
    Feb 19, 2024 · Ian Comley, VFX supervisor at ILM noted that the creative process of The Creator was refreshingly welcome as abstracting highly technical ideas ...
  22. [22]
    When was Houdini 1.0 and Prisms 1.0 released? | Forums - SideFX
    Nov 17, 2014 · > >> Brief Houdini Release History > >> 9.0 Sep 2007 Workflow/fluid ... > >> 4.0 Dec 1999 UIoverhaul/RBD/VEX/polystitch/Linux > support ...
  23. [23]
    VEX - SideFX
    VEX is a high-performance expression language used in many places in Houdini, such as writing shaders. VEX evaluation is typically very efficient.VEX Functions · VEX language reference · Using VEX expressionsMissing: origins design applications evolution
  24. [24]
    VEX language reference - SideFX
    VEX programs are written for a specific context. For example, a shader that controls the surface color of an object is written for the surface context.Missing: origins design evolution
  25. [25]
  26. [26]
    Houdini 21.0 - SideFX
    Houdini then compiles the node network into executable VEX code. LOP - USD nodes. LOP nodes generate USD describing characters, props, lighting, and rendering.Python scripting · VEX · Geometry nodes · Basics
  27. [27]
    Houdini Main Changelogs - SideFX
    Support for OpenImageDenoise hardware acceleration on NVidia Blackwell architecture (i.e. RTX 5000 series). Wed. November 5, 2025. First · 1 · 2 · 3 · 4 · Last.
  28. [28]
    The "No Programming Required" Introduction to Houdini VEX
    May 2, 2017 · It was made to be a high performance and efficient general purpose language for writing shaders and custom nodes within Houdini. The performance ...
  29. [29]
    Sony Pictures Imageworks Releases Open Source Shading ...
    Jan 14, 2010 · OSL was designed to enable and support the latest developments in rendering technology. Unlike previous shader languages, OSL assumes a ...Missing: history | Show results with:history
  30. [30]
    AcademySoftwareFoundation/OpenShadingLanguage - GitHub
    OSL was originally developed by Sony Pictures Imageworks for use in its in- house renderer used for feature film animation and visual effects, released as open ...
  31. [31]
    Open Shading Language | ACM SIGGRAPH 2010 Talks
    Open Shading Language (OSL) was developed by Sony Pictures Imageworks for use in its in-house renderer used for feature film animation and visual effects.
  32. [32]
    OSL Patterns - RenderMan 26
    Apr 11, 2025 · RenderMan only supports the generic “shader” shader type, not the more specific types of “surface”, “displacement”, “light”, and “volume” ...
  33. [33]
    OSL Shaders - Arnold User Guide
    OSL shaders can be used to implement anything from simple texture patterns to full materials using closures. They can be placed in the plugin search path.Missing: BSDFs | Show results with:BSDFs
  34. [34]
    Open Shading Language - Blender 4.5 LTS Manual
    Limitations. OSL is not supported with GPU rendering unless using the OptiX backend. Some OSL features are not available when using the OptiX backend. Examples ...Missing: offline | Show results with:offline<|separator|>
  35. [35]
    Octane Open Shading Language (OSL) - LightWave 3D
    Aug 19, 2025 · Octane Render for LightWave has implemented the following nodes to support OSL use in LightWave with Octane Render: OSL Node · OSL Enum Node.
  36. [36]
    Spider-Man: the detailed vfx of spiders and lizards - fxguide
    Jul 3, 2012 · OSL is open source but only currently used by SPI. As part of moving to the Open Shader Language OSL, the team was able to “write out light ...
  37. [37]
    Open Shading Language Joins ASWF
    Apr 16, 2020 · It has since become the main embedded language in several industry-standard renderers, and it has been used in 100+ films including Spider-Man: ...
  38. [38]
    Open Shading Language
    However, it is specifically designed for advanced rendering algo- rithms and has features such as radiance closures, BSDFs, and de- ferred ray tracing as ...<|separator|>
  39. [39]
    [PDF] PHYSICAL PRODUCTION SHADERS WITH OSL - Self Shadow
    What is Open Shading Language? Open Shading Language (OSL) is an open source project started by Larry Gritz at Sony Pictures. Imageworks. OSL is a way of ...Missing: parallel | Show results with:parallel
  40. [40]
    (PDF) Blue Moon Rendering Tools: User Guide - ResearchGate
    This document explains how to use the Blue Moon Rendering Tools (BMRT), which are a set of rendering programs and libraries which adhere to the RenderMan ...
  41. [41]
    BMRT: A Global Illumination Implementation of the RenderMan ...
    BMRT incorporates a mechanism to specify light source shadow capabilities per light, allowing ray tracing to accurately determine occlusion without precomputed ...
  42. [42]
    [PDF] NVIDIA Gelato 2
    Gelato uses its own C-like shading language, to create surface textures and lighting for scenes using the renderer. Gelato Shading. Language provides the ...Missing: mental | Show results with:mental
  43. [43]
    NVIDIA Ventures Deeper into Middleware Enabling
    Mar 17, 2008 · You'd want to render using mental ray and you could use MetaSL shaders within mental ray. And because mental ray will start to leverage the GPU ...
  44. [44]
    3ds Max 2026 Help | Open Shading Language (OSL) | Autodesk
    Open shading language (OSL) lets you use a new OSL Map, an entire category of various OSL maps, and you can create your own OSL maps using development tools ...
  45. [45]
    [PDF] RenderMan, Theory and Practice - Pixar Graphics Technologies
    Jul 27, 2003 · Thorough knowledge of 3D image synthesis, computer graphics illumination models, the RenderMan Interface and Shading Language and C programming.
  46. [46]
    CG Science for Artists – Part 1: Real-Time and Offline Rendering
    Oct 15, 2010 · Good examples of offline renderers are Mental Ray, VRay, RenderMan. Many of these software renderers make use of what's known as a 'raytracing' ...
  47. [47]
    Using AI for the Creation and Modification of OSL Shaders in 3ds Max
    Open Shading Language (OSL) in 3ds Max 2026 software empowers artists to craft custom procedural materials, enabling intricate control over textures and ...
  48. [48]
    Procedural Material Generation with Large Vision-Language Models
    Feb 18, 2025 · In this work, we leverage the ability to convert procedural materials into standard Python programs and fine-tune a large pre-trained vision-language model ( ...
  49. [49]
    None
    Below is a merged summary of the ARB_vertex_program extension, consolidating all information from the provided segments into a single, comprehensive response. To maximize detail and clarity, I’ll use a structured format with tables where appropriate, followed by a narrative summary. This ensures all key details—origins, syntax, features, limitations, dependencies, and URLs—are retained and organized efficiently.
  50. [50]
    ARB_fragment_program - Khronos Registry
    Unextended OpenGL mandates a certain set of configurable per- fragment computations defining texture application, texture environment, color sum, and fog ...
  51. [51]
    History of Programmability - OpenGL Wiki
    Jan 15, 2015 · Each stage was effectively an opcode in an assembly language that only had 2 opcodes in a program. It had a register file consisting of the ...Missing: features | Show results with:features
  52. [52]
    [PDF] OpenGL ARB Vertex Program | NVIDIA
    An OpenGL ARB Vertex Program is an assembly language interface to the T&L unit, using a GPU instruction set to perform vertex math, and is dynamically loadable.
  53. [53]
    Bump-Mapping, Multi-Texturing & Extensions - NeHe Productions
    Now back to code: __ARB_ENABLE is used to override multitexturing for a special compile-run entirely. If you want to see your OpenGL-extensions, just un-comment ...
  54. [54]
    Selecting a Shading Language - OpenGL Wiki - The Khronos Group
    Sep 8, 2019 · The ARB_vertex_program and ARB_fragment_program extensions expose a assembly-like shading language. It is not pure assembly, and implementations ...Missing: limitations | Show results with:limitations
  55. [55]
    OpenGL Resurges in 2025 with Mesh Shader Extensions for Gaming
    Oct 27, 2025 · OpenGL is experiencing an unexpected resurgence in October 2025 with new extensions like GL_EXT_mesh_shader, driven by niche demands from gaming ...
  56. [56]
    Shader Models vs Shader Profiles - Win32 apps | Microsoft Learn
    Jun 30, 2021 · Shader model 1 started with DirectX 8 and included assembly level and C-like instructions. This model has many limitations caused by early ...Missing: introduction | Show results with:introduction
  57. [57]
    Using Shaders in Direct3D 9 - Win32 apps | Microsoft Learn
    Aug 19, 2020 · For each of these virtual shader machines, an assembly language was designed. Programs written to the shader models (names vs_1_1 and ps_1_1 ...Compiling a Shader for... · Initializing Shader Constants
  58. [58]
    Asm Shader Reference - Win32 apps - Microsoft Learn
    Dec 9, 2019 · Shaders drive the programmable graphics pipeline. Vertex Shader Reference Vertex Shader Differences summarizes the differences between vertex shader versions.Vertex Shader Reference · Pixel Shader Reference
  59. [59]
  60. [60]
    Effect-Compiler Tool - Win32 apps - Microsoft Learn
    Aug 19, 2020 · FXC (fxc.exe) is an offline tool for compiling HLSL shaders for all versions of Direct3D. The tool is located at (SDK ...
  61. [61]
    Releases · microsoft/DirectXShaderCompiler - GitHub
    This is a Patch Release for the May 2025 DirectX Compiler. Issue #7510 was reported, where calling sizeof() on a templated type would crash the compiler.Missing: fxc | Show results with:fxc
  62. [62]
    Khronos Releases OpenGL 4.6 with SPIR-V Support
    Jul 31, 2017 · Khronos Releases OpenGL 4.6 with SPIR-V Support. OpenGL celebrates 25th anniversary with 4.6 release adding 11 ARB and EXT extensions into the core ...
  63. [63]
    [PDF] The OpenGL® Shading Language, Version 4.60.8 - Khronos Registry
    The Language. Specification for the es profile is specified in The OpenGL ES Shading Language specification. Shaders for the core or compatibility profiles ...
  64. [64]
    [PDF] The OpenGL ES® Shading Language, Version 3.20.8
    See “Shading Language Grammar” for the definitive reference on the syntax to declare and define functions. All functions must be either declared with a ...
  65. [65]
    [PDF] OpenGL 4.6 (Core Profile) - May 5, 2022 - Khronos Registry
    May 1, 2025 · This specification has been created under the Khronos ... This document, referred to as the “OpenGL Specification” or just “Specification ...<|separator|>
  66. [66]
    Manual: GLSL in Unity
    In GLSL, all shader function entry points have to be called main() . When Unity loads the GLSL shader, it loads the source once for the vertex program, with ...
  67. [67]
    SPIR-V Extended Instructions for GLSL - Khronos Registry
    May 5, 2025 · Khronos SPIR-V Issue #855: Clarify exponent limits for half-precision floats in Ldexp. Version 1.00. Last updated 2025-05-05 20:40:32 UTC.
  68. [68]
    Vulkan: Continuing to Forge Ahead - The Khronos Group
    Aug 5, 2025 · The Vulkan ecosystem hit a major milestone in 2025 with the widespread availability of production graphics drivers that are Vulkan 1.4 ...
  69. [69]
    High-level shader language (HLSL) - Win32 apps | Microsoft Learn
    Aug 4, 2021 · HLSL is the C-like high-level shader language that you use with programmable shaders in DirectX. For example, you can use HLSL to write a vertex shader, or a ...
  70. [70]
    DirectX 9 - BetaWiki
    Apr 4, 2025 · DirectX 9 is a version of DirectX that was introduced in December 2002. The most important change was the implementation of High Level Shading Language (HLSL).
  71. [71]
    Semantics - Win32 apps - Microsoft Learn
    Aug 20, 2021 · The syntax for adding a semantic to a shader variable is shown here (Variable Syntax (DirectX HLSL)). In general, data passed between ...Missing: intrinsics mul raytracing DXR
  72. [72]
    DirectX Raytracing (DXR) Functional Spec - Microsoft Open Source
    Jun 30, 2025 · This document describes raytracing support in D3D12 as a first class peer to compute and graphics (rasterization).
  73. [73]
    Manual: Shading language used in Unity
    Unity uses the HLSL programming language for shader programs. It has two syntaxes: legacy and DX10+. Unity uses macros to handle platform support.
  74. [74]
    HLSL Shader Model 6.0 - Win32 apps - Microsoft Learn
    Aug 25, 2021 · The model 6.0 intrinsics enable the elimination of barrier constructs when the scope of synchronization is within the width of the SIMD processor.Missing: evolution mesh
  75. [75]
    HLSL Shader Model 6.8 - Microsoft Open Source
    This document covers the new Shader Model 6.8. A brief summary of each new feature is listed below along with links to detailed specifications.Missing: evolution intrinsics SIMD mesh shaders 2025
  76. [76]
    Effects (Direct3D 10) - Win32 apps | Microsoft Learn
    Jun 11, 2021 · To implement a multiple pass rendering effect, implement one or more passes within a technique. For example, say you wanted to render some ...
  77. [77]
    NVIDIA Introduces "Cg": C for Graphics - Blue's News
    SANTA CLARA, CA - JUNE 13, 2002 - NVIDIA® Corporation (Nasdaq: NVDA), the worldwide leader in visual processing solutions, today introduced the Cg Language ...
  78. [78]
    The Cg Tutorial - Chapter 1. Introduction - NVIDIA
    Later, in Section 1.3, you will learn more about the history of shading languages and where Cg fits into this history. 1.1.2 Cg's Data-Flow Model. In addition ...Missing: timeline | Show results with:timeline
  79. [79]
    The Cg Tutorial - Chapter 10. Profiles and Performance - NVIDIA
    Cg provides profiles for pixel shader versions 1.1, 1.2, and 1.3. The profile identifiers are ps_1_1 , ps_1_2 , and ps_1_3 , respectively. Each profile ...
  80. [80]
    Cg: a system for programming graphics hardware in a C-like language
    The language follows the philosophy of C, in that it is a hardware-oriented, general-purpose language, rather than an application-specific shading language. The ...<|control11|><|separator|>
  81. [81]
    Cg_language - NVIDIA
    The Cg language is primarily modeled on ANSI C, but adopts some ideas from modern languages such as C++ and Java, and from earlier shading languages such as ...Missing: cg_1_1 | Show results with:cg_1_1
  82. [82]
    The Cg Tutorial - Appendix C. The CgFX File Format - NVIDIA
    CgFX allows shaders to be exchanged without the associated C++ code that is normally necessary to make a Cg program work with OpenGL or Direct3D. C.2.1 ...
  83. [83]
    Game Creation with XNA/3D Development/Shaders and Effects
    Cg is supported by FX Composer which is discussed later in this article. The High Level Shading Language (HLSL) and its use in XNA. edit. Shaders in XNA are ...
  84. [84]
    Maya Cg Plug-in - NVIDIA
    The Maya Cg Plug-in allows artists to author and visualize content in Maya 4.5 and Maya 5.0 using advanced hardware rendering and the Cg high level language.
  85. [85]
    Cg FAQ | NVIDIA Developer
    A shading language is a type of programming language that tells the GPU how to shade pixels. The main program will still be written in C, C++, C#, Java, Python ...Missing: cg_1_1 | Show results with:cg_1_1
  86. [86]
    Metal Overview - Apple Developer
    Metal is a modern, tightly integrated graphics and compute API coupled with a powerful shading language designed so you can take full advantage of Apple silicon ...
  87. [87]
    [PDF] Metal Shading Language Specification - Apple Developer
    Dec 6, 2016 · Metal enables you to develop apps that take advantage of the graphics and compute processing power of the GPU. This document describes the ...
  88. [88]
    Discover Metal 3 - WWDC22 - Videos - Apple Developer
    Jun 9, 2022 · Harness the full potential of Apple silicon in your app with Metal 3. We'll introduce you to the latest features, improvements, and tooling.
  89. [89]
    What's New - Metal - Apple Developer
    Metal 4 introduces first-class support for machine learning, starting with native support for tensors in both the API and shading language.Discover Metal 4 · Go further with Metal 4 games · Explore Metal 4 gamesMissing: 2024 | Show results with:2024
  90. [90]
    First Public Working Drafts: WebGPU and WebGPU Shading ... - W3C
    May 18, 2021 · WebGPU Shading Language: WebGPU Shader Language (WGSL) is the shader language for WebGPU. That is, an application using the WebGPU API uses WGSL ...
  91. [91]
    WebGPU Shading Language - W3C
    WGSL describes the types that can be stored in memory as memory views. WGSL provides commonly used rendering types in the form of textures and samplers. These ...Introduction · WGSL Module · Directives · Types
  92. [92]
    Writing shaders for WebGPU in WGSL - Babylon.js Documentation
    You can use the ShaderMaterial class to write WGSL code in much the same way you use it to write GLSL but with some small differences.Using the WGSL shader store · Special syntax used in WGSL...
  93. [93]
    WebGPU - W3C
    Oct 28, 2025 · WebGPU is an API that exposes the capabilities of GPU hardware for the Web. The API is designed from the ground up to efficiently map to (post-2014) native GPU ...
  94. [94]
    Chrome ships WebGPU | Blog
    Apr 6, 2023 · The Chrome team is thrilled to announce that WebGPU is now available by default in Chrome 113, which is currently in the Beta channel. WebGPU is ...Missing: adoption games ML<|control11|><|separator|>
  95. [95]
    PlayStation Shading Language for PS4 - GDC Vault
    PSSL is a specific, extended shading language for PS4, enabling cross-compatibility with PC and unlocking PS4 GPU features.
  96. [96]
    How The Crew was ported to PlayStation 4 | Eurogamer.net
    Jul 19, 2013 · Reflections' experience suggests that the PlayStation Shader Language (PSSL) is very similar indeed to the HLSL standard in DirectX 11, with ...
  97. [97]
    Basics of Pixel Bender shaders - AIR SDK
    Adobe Pixel Bender is a programming language that is used to create or manipulate image content. Using Pixel Bender you create a kernel, also known as a shader.Missing: AGAL | Show results with:AGAL
  98. [98]
    Adobe Graphics Assembly Language (AGAL) - AIR SDK
    The Adobe Graphics Assembly Language (AGAL) is a shader language for defining vertex and fragment rendering programs. The AGAL programs must be uploaded to the ...
  99. [99]
    ShaderLab language reference - Unity - Manual
    ShaderLab language reference. Find the blocks, directives, and commands you need to write a shader in ShaderLabUnity's language for defining the structure ...
  100. [100]
    Overview of Shaders in Plugins Unreal Engine
    USF shader files, based on HLSL language, is Unreal Engine shader file format that contains the multi platform shader code. To achieve this multi platform ...
  101. [101]
    All the big news and announcements from the State of Unreal 2025
    Jun 3, 2025 · We also revealed the latest on Unreal Engine 5.6, including major performance upgrades to empower teams to build large-scale open worlds that, ...
  102. [102]
    Brook for GPUs: stream computing on graphics hardware
    Brook extends C to include simple data-parallel constructs, enabling the use of the GPU as a streaming co-processor. We present a compiler and runtime system ...Missing: AMD | Show results with:AMD
  103. [103]
    Cross Platform Shaders in 2012 - Aras Pranckevičius
    Oct 1, 2012 · Parse shader source in one language, produce some intermediate representation, massage / verify that representation as needed, “print” it into ...
  104. [104]
    Compute shaders - Unity - Manual
    Oct 7, 2025 · Cross-platform support. As with regular shaders, Unity is capable of translating compute shaders from HLSL to other shader languages. Therefore, ...
  105. [105]
    Cg Toolkit - NVIDIA Developer
    NVIDIA was proud to introduce programmable shading with Cg, which supported dozens of different OpenGL and DirectX profile targets. It allowed developers to ...Missing: cg_1_1 | Show results with:cg_1_1
  106. [106]
    KhronosGroup/glslang: Khronos-reference front end for GLSL/ESSL ...
    The spirv-remap utility from glslang has been ported to the SPIRV-Tools repository as a new optimization pass called canonicalize-ids, available in spirv-opt.
  107. [107]
  108. [108]
    This repo hosts the source for the DirectX Shader Compiler ... - GitHub
    The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate ...
  109. [109]
    ShaderConductor is a tool designed for cross-compiling ... - GitHub
    Aug 25, 2025 · ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages. Features. Converts HLSL to readable, usable and ...
  110. [110]
    GLSL-to-HLSL reference - UWP applications - Microsoft Learn
    Oct 20, 2022 · You port your OpenGL Shader Language (GLSL) code to Microsoft High Level Shader Language (HLSL) code when you port your graphics architecture from OpenGL ES 2. ...Comparing Opengl Es 2.0 With... · Porting Glsl Variables To... · Porting Glsl Types To HlslMissing: translation swizzle
  111. [111]
    Releases · microsoft/ShaderConductor - GitHub
    Aug 25, 2025 · ShaderConductor v0.2.0 provides an useable end-to-end cross platform shader cross-compiling system. It cross compiles HLSL to other shading languages.
  112. [112]
    SPIR-V: The Standard IR for Parallel Compute and Graphics
    SPIR-V 1.6 Revision 6 Released​​ The latest updates to the SPIR-V specification were released on July 10 2025.Missing: GLSL | Show results with:GLSL
  113. [113]
    SPIR-V Specification - Khronos Registry
    This document fully defines SPIR-V, a Khronos-standard binary intermediate language for representing graphical-shader stages and compute kernels for multiple ...Introduction · About This Document · Specification · Physical Layout of a SPIR-V...
  114. [114]
    Khronos Group Releases SPIR-V 1.6.5
    Jan 30, 2025 · The Khronos SPIR Working Group released the SPIR-V specification revision 1.6.5. This is a regular maintenance release with valuable clarifications and updates.
  115. [115]
    KhronosGroup/SPIRV-Tools - GitHub
    The SPIR-V Tools project provides an API and commands for processing SPIR-V modules. The project includes an assembler, binary module parser, disassembler, ...
  116. [116]
    What's New in WebGPU (Chrome 141) | Blog
    Sep 24, 2025 · This update enables Tint, the WGSL compiler, to take advantage of new SPIR-V features, relaxations, and new instructions for more efficient ...
  117. [117]
    DirectX Adopting SPIR-V as the Interchange Format of the Future
    Sep 19, 2024 · Once Shader Model 7 is released, DirectX 12 will accept shaders compiled to SPIR-V™. The HLSL team is committed to open development processes ...<|separator|>
  118. [118]
    8 reasons why SPIR-V makes a big difference - StreamHPC
    May 21, 2015 · 8 reasons why SPIR-V makes a big difference · 1. It's used by Vulkan · 3. It's better than the LLVM-based SPIR · 4. Tools can do (static) analysis ...
  119. [119]
    shader-slang/slang: Making it easier to work with shaders - GitHub
    The Slang shading language is designed to enable real-time graphics developers to work with large-scale, high-performance shader code. Write Shaders Once, Run ...The Slang Shading Language · Issues 523 · Pull requests 77 · Discussions
  120. [120]
    Documentation - The Slang Shading Language
    The guide provides an introduction to the Slang language and its major features, as well as the compilation and reflection API.
  121. [121]
    [PDF] SLANG.D: Fast, Modular and Differentiable Shader Programming
    Fig. 1. SLANG.D is a shading language providing first-class automatic differentiation support that seamlessly interoperates with existing language features.
  122. [122]
    LunarG Releases Vulkan SDK 1.4.304.1 - vkconfig3 ...
    Feb 7, 2025 · An updated version of the Slang shading language compiler is included in this release. This version adds DescriptorHandle for bindless handle ...
  123. [123]
    Capabilities - The Slang Shading Language
    Slang models code generation targets, shader stages, API extensions and hardware features as distinct capability atoms.
  124. [124]
    [PDF] No More Shading Languages: Compiling C++ to Vulkan Shaders
    We present the Vcc compiler, which allows conventional C and C++ code to run as Vulkan shaders. Our compiler is complemented by a simple shading library and ...
  125. [125]
    Porting GPU shaders to Rust 30x faster with AI
    Jun 24, 2025 · I used AI to port virtually all of the shaders from Sascha Willems' popular Vulkan sample repo over to Rust using Rust GPU.
  126. [126]
    Shadertoys ported to Rust GPU
    We ported a few popular Shadertoy shaders over to Rust using Rust GPU. The process was straightforward and we want to share some highlights.What Is Rust Gpu? ​ · Shared Code Between Cpu And... · Traits, Generics, And...