yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
e23b5fa99
master
1< ul class ="toc_root_list ">< li data-link ="index ">< span > Slang User's Guide</ span > 2< ul class ="toc_list "> 3< li data-link ="introduction ">< span > Introduction</ span > 4< ul class ="toc_list "> 5< li data-link ="introduction#why-use-slang ">< span > Why use Slang?</ span ></ li > 6< li data-link ="introduction#who-is-slang-for ">< span > Who is Slang for?</ span ></ li > 7< li data-link ="introduction#who-is-this-guide-for ">< span > Who is this guide for?</ span ></ li > 8< li data-link ="introduction#goals-and-non-goals ">< span > Goals and Non-Goals</ span ></ li > 9</ ul > 10</ li > 11< li data-link ="get-started ">< span > Getting Started with Slang</ span > 12< ul class ="toc_list "> 13< li data-link ="get-started#installation ">< span > Installation</ span ></ li > 14< li data-link ="get-started#your-first-slang-shader ">< span > Your first Slang shader</ span ></ li > 15< li data-link ="get-started#the-full-example ">< span > The full example</ span ></ li > 16</ ul > 17</ li > 18< li data-link ="conventional-features ">< span > Conventional Language Features</ span > 19< ul class ="toc_list "> 20< li data-link ="conventional-features#types ">< span > Types</ span ></ li > 21< li data-link ="conventional-features#expressions ">< span > Expressions</ span ></ li > 22< li data-link ="conventional-features#statements ">< span > Statements</ span ></ li > 23< li data-link ="conventional-features#functions ">< span > Functions</ span ></ li > 24< li data-link ="conventional-features#preprocessor ">< span > Preprocessor</ span ></ li > 25< li data-link ="conventional-features#attributes ">< span > Attributes</ span ></ li > 26< li data-link ="conventional-features#global-variables-and-shader-parameters ">< span > Global Variables and Shader Parameters</ span ></ li > 27< li data-link ="conventional-features#shader-entry-points ">< span > Shader Entry Points</ span ></ li > 28< li data-link ="conventional-features#mixed-shader-entry-points ">< span > Mixed Shader Entry Points</ span ></ li > 29< li data-link ="conventional-features#auto-generated-constructors ">< span > Auto-Generated Constructors</ span ></ li > 30< li data-link ="conventional-features#initializer-lists ">< span > Initializer Lists</ span ></ li > 31</ ul > 32</ li > 33< li data-link ="convenience-features ">< span > Basic Convenience Features</ span > 34< ul class ="toc_list "> 35< li data-link ="convenience-features#type-inference-in-variable-definitions ">< span > Type Inference in Variable Definitions</ span ></ li > 36< li data-link ="convenience-features#immutable-values ">< span > Immutable Values</ span ></ li > 37< li data-link ="convenience-features#namespaces ">< span > Namespaces</ span ></ li > 38< li data-link ="convenience-features#member-functions ">< span > Member functions</ span ></ li > 39< li data-link ="convenience-features#properties ">< span > Properties</ span ></ li > 40< li data-link ="convenience-features#initializers ">< span > Initializers</ span ></ li > 41< li data-link ="convenience-features#operator-overloading ">< span > Operator Overloading</ span ></ li > 42< li data-link ="convenience-features#subscript-operator ">< span > Subscript Operator</ span ></ li > 43< li data-link ="convenience-features#tuple-types ">< span > Tuple Types</ span ></ li > 44< li data-link ="convenience-features#optionalt-type ">< span > `Optional<T>` type</ span ></ li > 45< li data-link ="convenience-features#conditionalt-bool-condition-type ">< span > `Conditional<T, bool condition>` Type</ span ></ li > 46< li data-link ="convenience-features#if_let-syntax ">< span > `if_let` syntax</ span ></ li > 47< li data-link ="convenience-features#reinterprett-operation ">< span > `reinterpret<T>` operation</ span ></ li > 48< li data-link ="convenience-features#pointers-limited ">< span > Pointers (limited)</ span ></ li > 49< li data-link ="convenience-features#descriptorhandle-for-bindless-descriptor-access ">< span > `DescriptorHandle` for Bindless Descriptor Access</ span ></ li > 50< li data-link ="convenience-features#extensions ">< span > Extensions</ span ></ li > 51< li data-link ="convenience-features#multi-level-break ">< span > Multi-level break</ span ></ li > 52< li data-link ="convenience-features#force-inlining ">< span > Force inlining</ span ></ li > 53< li data-link ="convenience-features#error-handling ">< span > Error handling</ span ></ li > 54< li data-link ="convenience-features#special-scoping-syntax ">< span > Special Scoping Syntax</ span ></ li > 55< li data-link ="convenience-features#user-defined-attributes-experimental ">< span > User Defined Attributes (Experimental)</ span ></ li > 56</ ul > 57</ li > 58< li data-link ="modules ">< span > Modules and Access Control</ span > 59< ul class ="toc_list "> 60< li data-link ="modules#defining-a-module ">< span > Defining a Module</ span ></ li > 61< li data-link ="modules#importing-a-module ">< span > Importing a Module</ span ></ li > 62< li data-link ="modules#access-control ">< span > Access Control</ span ></ li > 63< li data-link ="modules#organizing-file-structure-of-modules ">< span > Organizing File Structure of Modules</ span ></ li > 64< li data-link ="modules#legacy-modules ">< span > Legacy Modules</ span ></ li > 65</ ul > 66</ li > 67< li data-link ="capabilities ">< span > Capabilities</ span > 68< ul class ="toc_list "> 69< li data-link ="capabilities#capability-atoms-and-capability-requirements ">< span > Capability Atoms and Capability Requirements</ span ></ li > 70< li data-link ="capabilities#conflicting-capabilities ">< span > Conflicting Capabilities</ span ></ li > 71< li data-link ="capabilities#capabilities-between-parent-and-members ">< span > Capabilities Between Parent and Members</ span ></ li > 72< li data-link ="capabilities#capabilities-between-subtype-and-supertype ">< span > Capabilities Between Subtype and Supertype</ span ></ li > 73< li data-link ="capabilities#capabilities-between-requirement-and-implementation ">< span > Capabilities Between Requirement and Implementation</ span ></ li > 74< li data-link ="capabilities#capabilities-of-functions ">< span > Capabilities of Functions</ span ></ li > 75< li data-link ="capabilities#capability-aliases ">< span > Capability Aliases</ span ></ li > 76< li data-link ="capabilities#validation-of-capability-requirements ">< span > Validation of Capability Requirements</ span ></ li > 77</ ul > 78</ li > 79< li data-link ="interfaces-generics ">< span > Interfaces and Generics</ span > 80< ul class ="toc_list "> 81< li data-link ="interfaces-generics#interfaces ">< span > Interfaces</ span ></ li > 82< li data-link ="interfaces-generics#generics ">< span > Generics</ span ></ li > 83< li data-link ="interfaces-generics#supported-constructs-in-interface-definitions ">< span > Supported Constructs in Interface Definitions</ span ></ li > 84< li data-link ="interfaces-generics#associated-types ">< span > Associated Types</ span ></ li > 85< li data-link ="interfaces-generics#generic-value-parameters ">< span > Generic Value Parameters</ span ></ li > 86< li data-link ="interfaces-generics#type-equality-constraints ">< span > Type Equality Constraints</ span ></ li > 87< li data-link ="interfaces-generics#interface-typed-values ">< span > Interface-typed Values</ span ></ li > 88< li data-link ="interfaces-generics#extending-a-type-with-additional-interface-conformances ">< span > Extending a Type with Additional Interface Conformances</ span ></ li > 89< li data-link ="interfaces-generics#is-and-as-operator ">< span > `is` and `as` Operator</ span ></ li > 90< li data-link ="interfaces-generics#generic-interfaces ">< span > Generic Interfaces</ span ></ li > 91< li data-link ="interfaces-generics#generic-extensions ">< span > Generic Extensions</ span ></ li > 92< li data-link ="interfaces-generics#extensions-to-interfaces ">< span > Extensions to Interfaces</ span ></ li > 93< li data-link ="interfaces-generics#variadic-generics ">< span > Variadic Generics</ span ></ li > 94< li data-link ="interfaces-generics#builtin-interfaces ">< span > Builtin Interfaces</ span ></ li > 95</ ul > 96</ li > 97< li data-link ="autodiff ">< span > Automatic Differentiation</ span > 98< ul class ="toc_list "> 99< li data-link ="autodiff#auto-diff-operations-fwd_diff-and-bwd_diff ">< span > Auto-diff operations `fwd_diff` and `bwd_diff`</ span ></ li > 100< li data-link ="autodiff#differentiable-type-system ">< span > Differentiable Type System</ span ></ li > 101< li data-link ="autodiff#user-defined-derivative-functions ">< span > User-Defined Derivative Functions</ span ></ li > 102< li data-link ="autodiff#using-auto-diff-with-generics ">< span > Using Auto-diff with Generics</ span ></ li > 103< li data-link ="autodiff#using-auto-diff-with-interface-requirements-and-interface-types ">< span > Using Auto-diff with Interface Requirements and Interface Types</ span ></ li > 104< li data-link ="autodiff#primal-substitute-functions ">< span > Primal Substitute Functions</ span ></ li > 105< li data-link ="autodiff#working-with-mixed-differentiable-and-non-differentiable-code ">< span > Working with Mixed Differentiable and Non-Differentiable Code</ span ></ li > 106< li data-link ="autodiff#higher-order-differentiation ">< span > Higher-Order Differentiation</ span ></ li > 107< li data-link ="autodiff#restrictions-and-known-issues ">< span > Restrictions and Known Issues</ span ></ li > 108< li data-link ="autodiff#reference ">< span > Reference</ span ></ li > 109</ ul > 110</ li > 111< li data-link ="compiling ">< span > Compiling Code with Slang</ span > 112< ul class ="toc_list "> 113< li data-link ="compiling#concepts ">< span > Concepts</ span ></ li > 114< li data-link ="compiling#command-line-compilation-with-slangc ">< span > Command-Line Compilation with `slangc`</ span ></ li > 115< li data-link ="compiling#using-the-compilation-api ">< span > Using the Compilation API</ span ></ li > 116< li data-link ="compiling#multithreading ">< span > Multithreading</ span ></ li > 117< li data-link ="compiling#compiler-options ">< span > Compiler Options</ span ></ li > 118< li data-link ="compiling#debugging ">< span > Debugging</ span ></ li > 119</ ul > 120</ li > 121< li data-link ="reflection ">< span > Using the Reflection API</ span > 122< ul class ="toc_list "> 123< li data-link ="reflection#compiling-a-program ">< span > Compiling a Program</ span ></ li > 124< li data-link ="reflection#types-and-variables ">< span > Types and Variables</ span ></ li > 125< li data-link ="reflection#layout-for-types-and-variables ">< span > Layout for Types and Variables</ span ></ li > 126< li data-link ="reflection#programs-and-scopes ">< span > Programs and Scopes</ span ></ li > 127< li data-link ="reflection#calculating-cumulative-offsets ">< span > Calculating Cumulative Offsets</ span ></ li > 128< li data-link ="reflection#determining-whether-parameters-are-used ">< span > Determining Whether Parameters Are Used</ span ></ li > 129< li data-link ="reflection#conclusion ">< span > Conclusion</ span ></ li > 130</ ul > 131</ li > 132< li data-link ="targets ">< span > Supported Compilation Targets</ span > 133< ul class ="toc_list "> 134< li data-link ="targets#background-and-terminology ">< span > Background and Terminology</ span ></ li > 135< li data-link ="targets#direct3d-11 ">< span > Direct3D 11</ span ></ li > 136< li data-link ="targets#direct3d-12 ">< span > Direct3D 12</ span ></ li > 137< li data-link ="targets#vulkan ">< span > Vulkan</ span ></ li > 138< li data-link ="targets#opengl ">< span > OpenGL</ span ></ li > 139< li data-link ="targets#metal ">< span > Metal</ span ></ li > 140< li data-link ="targets#cuda-and-optix ">< span > CUDA and OptiX</ span ></ li > 141< li data-link ="targets#cpu-compute ">< span > CPU Compute</ span ></ li > 142< li data-link ="targets#webgpu ">< span > WebGPU</ span ></ li > 143< li data-link ="targets#summary ">< span > Summary</ span ></ li > 144</ ul > 145</ li > 146< li data-link ="link-time-specialization ">< span > Link-time Specialization and Module Precompilation</ span > 147< ul class ="toc_list "> 148< li data-link ="link-time-specialization#link-time-constants ">< span > Link-time Constants</ span ></ li > 149< li data-link ="link-time-specialization#link-time-types ">< span > Link-time Types</ span ></ li > 150< li data-link ="link-time-specialization#providing-default-settings ">< span > Providing Default Settings</ span ></ li > 151< li data-link ="link-time-specialization#using-precompiling-modules-with-the-api ">< span > Using Precompiling Modules with the API</ span ></ li > 152< li data-link ="link-time-specialization#additional-remarks ">< span > Additional Remarks</ span ></ li > 153</ ul > 154</ li > 155< li data-link ="11-language-version ">< span > language slang 2026</ span > 156< ul class ="toc_list "> 157< li data-link ="11-language-version#the-legacy-slang-language ">< span > The Legacy Slang Language</ span ></ li > 158< li data-link ="11-language-version#slang-2025 ">< span > Slang 2025</ span ></ li > 159< li data-link ="11-language-version#slang-2026 ">< span > Slang 2026</ span ></ li > 160</ ul > 161</ li > 162< li data-link ="a1-special-topics ">< span > Special Topics</ span > 163< ul class ="toc_list "> 164< li data-link ="a1-01-matrix-layout ">< span > Handling Matrix Layout Differences on Different Platforms</ span > 165< ul class ="toc_list "> 166< li data-link ="a1-01-matrix-layout#two-conventions-of-matrix-transform-math ">< span > Two conventions of matrix transform math</ span ></ li > 167< li data-link ="a1-01-matrix-layout#discussion ">< span > Discussion</ span ></ li > 168< li data-link ="a1-01-matrix-layout#matrix-layout ">< span > Matrix Layout</ span ></ li > 169< li data-link ="a1-01-matrix-layout#overriding-default-matrix-layout ">< span > Overriding default matrix layout</ span ></ li > 170</ ul > 171</ li > 172< li data-link ="a1-03-obfuscation ">< span > Obfuscation</ span > 173< ul class ="toc_list "> 174< li data-link ="a1-03-obfuscation#obfuscation-in-slang ">< span > Obfuscation in Slang</ span ></ li > 175< li data-link ="a1-03-obfuscation#using-an-obfuscated-module ">< span > Using An Obfuscated Module</ span ></ li > 176< li data-link ="a1-03-obfuscation#accessing-source-maps ">< span > Accessing Source Maps</ span ></ li > 177< li data-link ="a1-03-obfuscation#accessing-source-maps-without-files ">< span > Accessing Source Maps without Files</ span ></ li > 178< li data-link ="a1-03-obfuscation#emit-source-maps ">< span > Emit Source Maps</ span ></ li > 179< li data-link ="a1-03-obfuscation#issuesfuture-work ">< span > Issues/Future Work</ span ></ li > 180</ ul > 181</ li > 182< li data-link ="a1-04-interop ">< span > Interoperation with Target-Specific Code</ span > 183< ul class ="toc_list "> 184< li data-link ="a1-04-interop#defining-intrinsic-functions-for-textual-targets ">< span > Defining Intrinsic Functions for Textual Targets</ span ></ li > 185< li data-link ="a1-04-interop#defining-intrinsic-types ">< span > Defining Intrinsic Types</ span ></ li > 186< li data-link ="a1-04-interop#injecting-preludes ">< span > Injecting Preludes</ span ></ li > 187< li data-link ="a1-04-interop#managing-cross-platform-code ">< span > Managing Cross-Platform Code</ span ></ li > 188< li data-link ="a1-04-interop#inline-spirv-assembly ">< span > Inline SPIRV Assembly</ span ></ li > 189</ ul > 190</ li > 191< li data-link ="a1-05-uniformity ">< span > Uniformity Analysis</ span > 192< ul class ="toc_list "> 193< li data-link ="a1-05-uniformity#treat-values-as-uniform ">< span > Treat Values as Uniform</ span ></ li > 194< li data-link ="a1-05-uniformity#treat-function-return-values-as-non-uniform ">< span > Treat Function Return Values as Non-uniform</ span ></ li > 195</ ul > 196</ li > 197</ ul > 198</ li > 199< li data-link ="a2-target-specific-features ">< span > Target-Specific Features</ span > 200< ul class ="toc_list "> 201< li data-link ="spirv-target-specific ">< span > SPIR-V-Specific Functionalities</ span > 202< ul class ="toc_list "> 203< li data-link ="spirv-target-specific#experimental-support-for-the-older-versions-of-spir-v ">< span > Experimental support for the older versions of SPIR-V</ span ></ li > 204< li data-link ="spirv-target-specific#memory-model ">< span > Memory model</ span ></ li > 205< li data-link ="spirv-target-specific#combined-texture-sampler ">< span > Combined texture sampler</ span ></ li > 206< li data-link ="spirv-target-specific#system-value-semantics ">< span > System-Value semantics</ span ></ li > 207< li data-link ="spirv-target-specific#using-sv_instanceid-and-sv_vertexid-with-spir-v-target ">< span > Using SV_InstanceID and SV_VertexID with SPIR-V target</ span ></ li > 208< li data-link ="spirv-target-specific#behavior-of-discard-after-spir-v-16 ">< span > Behavior of `discard` after SPIR-V 1.6</ span ></ li > 209< li data-link ="spirv-target-specific#supported-hlsl-features-when-targeting-spir-v ">< span > Supported HLSL features when targeting SPIR-V</ span ></ li > 210< li data-link ="spirv-target-specific#unsupported-glsl-keywords-when-targeting-spir-v ">< span > Unsupported GLSL keywords when targeting SPIR-V</ span ></ li > 211< li data-link ="spirv-target-specific#supported-atomic-types-for-each-target ">< span > Supported atomic types for each target</ span ></ li > 212< li data-link ="spirv-target-specific#constantbuffer-structuredbuffer-and-byteaddressbuffer ">< span > ConstantBuffer, StructuredBuffer and ByteAddressBuffer</ span ></ li > 213< li data-link ="spirv-target-specific#parameterblock-for-spir-v-target ">< span > ParameterBlock for SPIR-V target</ span ></ li > 214< li data-link ="spirv-target-specific#push-constants ">< span > Push Constants</ span ></ li > 215< li data-link ="spirv-target-specific#specialization-constants ">< span > Specialization Constants</ span ></ li > 216< li data-link ="spirv-target-specific#spir-v-specific-attributes ">< span > SPIR-V specific Attributes</ span ></ li > 217< li data-link ="spirv-target-specific#multiple-entry-points-support ">< span > Multiple entry points support</ span ></ li > 218< li data-link ="spirv-target-specific#global-memory-pointers ">< span > Global memory pointers</ span ></ li > 219< li data-link ="spirv-target-specific#matrix-type-translation ">< span > Matrix type translation</ span ></ li > 220< li data-link ="spirv-target-specific#legalization ">< span > Legalization</ span ></ li > 221< li data-link ="spirv-target-specific#tessellation ">< span > Tessellation</ span ></ li > 222< li data-link ="spirv-target-specific#spir-v-specific-compiler-options ">< span > SPIR-V specific Compiler options</ span ></ li > 223</ ul > 224</ li > 225< li data-link ="metal-target-specific ">< span > Metal-Specific Functionalities</ span > 226< ul class ="toc_list "> 227< li data-link ="metal-target-specific#entry-point-parameter-handling ">< span > Entry Point Parameter Handling</ span ></ li > 228< li data-link ="metal-target-specific#system-value-semantics ">< span > System-Value semantics</ span ></ li > 229< li data-link ="metal-target-specific#interpolation-modifiers ">< span > Interpolation Modifiers</ span ></ li > 230< li data-link ="metal-target-specific#resource-types ">< span > Resource Types</ span ></ li > 231< li data-link ="metal-target-specific#array-types ">< span > Array Types</ span ></ li > 232< li data-link ="metal-target-specific#matrix-layout ">< span > Matrix Layout</ span ></ li > 233< li data-link ="metal-target-specific#mesh-shader-support ">< span > Mesh Shader Support</ span ></ li > 234< li data-link ="metal-target-specific#header-inclusions-and-namespace ">< span > Header Inclusions and Namespace</ span ></ li > 235< li data-link ="metal-target-specific#parameter-blocks-and-argument-buffers ">< span > Parameter blocks and Argument Buffers</ span ></ li > 236< li data-link ="metal-target-specific#struct-parameter-flattening ">< span > Struct Parameter Flattening</ span ></ li > 237< li data-link ="metal-target-specific#return-value-handling ">< span > Return Value Handling</ span ></ li > 238< li data-link ="metal-target-specific#value-type-conversion ">< span > Value Type Conversion</ span ></ li > 239< li data-link ="metal-target-specific#conservative-rasterization ">< span > Conservative Rasterization</ span ></ li > 240< li data-link ="metal-target-specific#address-space-assignment ">< span > Address Space Assignment</ span ></ li > 241< li data-link ="metal-target-specific#explicit-parameter-binding ">< span > Explicit Parameter Binding</ span ></ li > 242< li data-link ="metal-target-specific#specialization-constants ">< span > Specialization Constants</ span ></ li > 243</ ul > 244</ li > 245< li data-link ="wgsl-target-specific ">< span > WGSL-Specific Functionalities</ span > 246< ul class ="toc_list "> 247< li data-link ="wgsl-target-specific#system-value-semantics ">< span > System-Value semantics</ span ></ li > 248< li data-link ="wgsl-target-specific#supported-hlsl-features-when-targeting-wgsl ">< span > Supported HLSL features when targeting WGSL</ span ></ li > 249< li data-link ="wgsl-target-specific#supported-atomic-types ">< span > Supported atomic types</ span ></ li > 250< li data-link ="wgsl-target-specific#constantbuffer-rwrasterizerorderedstructuredbuffer-rwrasterizerorderedbyteaddressbuffer ">< span > ConstantBuffer, (RW/RasterizerOrdered)StructuredBuffer, (RW/RasterizerOrdered)ByteAddressBuffer</ span ></ li > 251< li data-link ="wgsl-target-specific#interlocked-operations ">< span > Interlocked operations</ span ></ li > 252< li data-link ="wgsl-target-specific#entry-point-parameter-handling ">< span > Entry Point Parameter Handling</ span ></ li > 253< li data-link ="wgsl-target-specific#parameter-blocks ">< span > Parameter blocks</ span ></ li > 254< li data-link ="wgsl-target-specific#write-only-textures ">< span > Write-only Textures</ span ></ li > 255< li data-link ="wgsl-target-specific#pointers ">< span > Pointers</ span ></ li > 256< li data-link ="wgsl-target-specific#address-space-assignment ">< span > Address Space Assignment</ span ></ li > 257< li data-link ="wgsl-target-specific#matrix-type-translation ">< span > Matrix type translation</ span ></ li > 258< li data-link ="wgsl-target-specific#explicit-parameter-binding ">< span > Explicit Parameter Binding</ span ></ li > 259< li data-link ="wgsl-target-specific#specialization-constants ">< span > Specialization Constants</ span ></ li > 260</ ul > 261</ li > 262< li data-link ="glsl-target-specific ">< span > GLSL-Specific Functionalities</ span > 263< ul class ="toc_list "> 264< li data-link ="glsl-target-specific#combined-texture-sampler ">< span > Combined Texture Sampler</ span ></ li > 265< li data-link ="glsl-target-specific#system-value-semantics ">< span > System-Value Semantics</ span ></ li > 266< li data-link ="glsl-target-specific#discard-statement ">< span > `discard` Statement</ span ></ li > 267< li data-link ="glsl-target-specific#hlsl-features-supported-in-glsl ">< span > HLSL Features Supported in GLSL</ span ></ li > 268< li data-link ="glsl-target-specific#atomic-types ">< span > Atomic Types</ span ></ li > 269< li data-link ="glsl-target-specific#buffer-types ">< span > Buffer Types</ span ></ li > 270< li data-link ="glsl-target-specific#matrix-layout ">< span > Matrix Layout</ span ></ li > 271< li data-link ="glsl-target-specific#entry-points ">< span > Entry Points</ span ></ li > 272< li data-link ="glsl-target-specific#specialization-constants ">< span > Specialization Constants</ span ></ li > 273< li data-link ="glsl-target-specific#attributes-and-layout-qualifiers ">< span > Attributes and Layout Qualifiers</ span ></ li > 274< li data-link ="glsl-target-specific#glsl-specific-compiler-options ">< span > GLSL-Specific Compiler Options</ span ></ li > 275</ ul > 276</ li > 277</ ul > 278</ li > 279< li data-link ="reference ">< span > Reference</ span > 280< ul class ="toc_list "> 281< li data-link ="a3-01-reference-capability-profiles ">< span > Capability Profiles</ span > 282</ li > 283< li data-link ="a3-02-reference-capability-atoms ">< span > Capability Atoms</ span > 284< ul class ="toc_list "> 285< li data-link ="a3-02-reference-capability-atoms#targets ">< span > Targets</ span ></ li > 286< li data-link ="a3-02-reference-capability-atoms#stages ">< span > Stages</ span ></ li > 287< li data-link ="a3-02-reference-capability-atoms#versions ">< span > Versions</ span ></ li > 288< li data-link ="a3-02-reference-capability-atoms#extensions ">< span > Extensions</ span ></ li > 289< li data-link ="a3-02-reference-capability-atoms#compound-capabilities ">< span > Compound Capabilities</ span ></ li > 290< li data-link ="a3-02-reference-capability-atoms#other ">< span > Other</ span ></ li > 291</ ul > 292</ li > 293</ ul > 294</ li > 295</ ul > 296</ li > 297</ ul >