forked from shader-slang/slang
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtoc.html
190 lines (190 loc) · 12.7 KB
/
toc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<ul class="toc_root_list"><li data-link="index"><span>Slang User's Guide</span>
<ul class="toc_list">
<li data-link="introduction"><span>Introduction</span>
<ul class="toc_list">
<li data-link="introduction#why-use-slang"><span>Why use Slang?</span></li>
<li data-link="introduction#who-is-slang-for"><span>Who is Slang for?</span></li>
<li data-link="introduction#who-is-this-guide-for"><span>Who is this guide for?</span></li>
<li data-link="introduction#goals-and-non-goals"><span>Goals and Non-Goals</span></li>
</ul>
</li>
<li data-link="get-started"><span>Getting Started with Slang</span>
<ul class="toc_list">
<li data-link="get-started#installation"><span>Installation</span></li>
<li data-link="get-started#your-first-slang-shader"><span>Your first Slang shader</span></li>
<li data-link="get-started#the-full-example"><span>The full example</span></li>
</ul>
</li>
<li data-link="conventional-features"><span>Conventional Language Features</span>
<ul class="toc_list">
<li data-link="conventional-features#types"><span>Types</span></li>
<li data-link="conventional-features#expressions"><span>Expressions</span></li>
<li data-link="conventional-features#statements"><span>Statements</span></li>
<li data-link="conventional-features#functions"><span>Functions</span></li>
<li data-link="conventional-features#preprocessor"><span>Preprocessor</span></li>
<li data-link="conventional-features#attributes"><span>Attributes</span></li>
<li data-link="conventional-features#global-variables-and-shader-parameters"><span>Global Variables and Shader Parameters</span></li>
<li data-link="conventional-features#shader-entry-points"><span>Shader Entry Points</span></li>
<li data-link="conventional-features#mixed-shader-entry-points"><span>Mixed Shader Entry Points</span></li>
</ul>
</li>
<li data-link="convenience-features"><span>Basic Convenience Features</span>
<ul class="toc_list">
<li data-link="convenience-features#type-inference-in-variable-definitions"><span>Type Inference in Variable Definitions</span></li>
<li data-link="convenience-features#immutable-values"><span>Immutable Values</span></li>
<li data-link="convenience-features#namespaces"><span>Namespaces</span></li>
<li data-link="convenience-features#member-functions"><span>Member functions</span></li>
<li data-link="convenience-features#properties"><span>Properties</span></li>
<li data-link="convenience-features#initializers"><span>Initializers</span></li>
<li data-link="convenience-features#operator-overloading"><span>Operator Overloading</span></li>
<li data-link="convenience-features#subscript-operator"><span>Subscript Operator</span></li>
<li data-link="convenience-features#optionalt-type"><span>`Optional<T>` type</span></li>
<li data-link="convenience-features#reinterprett-operation"><span>`reinterpret<T>` operation</span></li>
<li data-link="convenience-features#pointers-limited"><span>Pointers (limited)</span></li>
<li data-link="convenience-features#struct-inheritance-limited"><span>`struct` inheritance (limited)</span></li>
<li data-link="convenience-features#extensions"><span>Extensions</span></li>
<li data-link="convenience-features#multi-level-break"><span>Multi-level break</span></li>
<li data-link="convenience-features#force-inlining"><span>Force inlining</span></li>
<li data-link="convenience-features#special-scoping-syntax"><span>Special Scoping Syntax</span></li>
</ul>
</li>
<li data-link="modules"><span>Modules and Access Control</span>
<ul class="toc_list">
<li data-link="modules#defining-a-module"><span>Defining a Module</span></li>
<li data-link="modules#importing-a-module"><span>Importing a Module</span></li>
<li data-link="modules#access-control"><span>Access Control</span></li>
<li data-link="modules#legacy-modules"><span>Legacy Modules</span></li>
</ul>
</li>
<li data-link="capabilities"><span>Capabilities</span>
<ul class="toc_list">
<li data-link="capabilities#capability-atoms-and-capability-requirements"><span>Capability Atoms and Capability Requirements</span></li>
<li data-link="capabilities#conflicting-capabilities"><span>Conflicting Capabilities</span></li>
<li data-link="capabilities#requirements-in-parent-scope"><span>Requirements in Parent Scope</span></li>
<li data-link="capabilities#inferrence-of-capability-requirements"><span>Inferrence of Capability Requirements</span></li>
<li data-link="capabilities#inferrence-on-target-switch"><span>Inferrence on target_switch</span></li>
<li data-link="capabilities#capability-aliases"><span>Capability Aliases</span></li>
<li data-link="capabilities#validation-of-capability-requirements"><span>Validation of Capability Requirements</span></li>
</ul>
</li>
<li data-link="interfaces-generics"><span>Interfaces and Generics</span>
<ul class="toc_list">
<li data-link="interfaces-generics#interfaces"><span>Interfaces</span></li>
<li data-link="interfaces-generics#generics"><span>Generics</span></li>
<li data-link="interfaces-generics#supported-constructs-in-interface-definitions"><span>Supported Constructs in Interface Definitions</span></li>
<li data-link="interfaces-generics#associated-types"><span>Associated Types</span></li>
<li data-link="interfaces-generics#generic-value-parameters"><span>Generic Value Parameters</span></li>
<li data-link="interfaces-generics#interface-typed-values"><span>Interface-typed Values</span></li>
<li data-link="interfaces-generics#extending-a-type-with-additional-interface-conformances"><span>Extending a Type with Additional Interface Conformances</span></li>
<li data-link="interfaces-generics#is-and-as-operator"><span>`is` and `as` Operator</span></li>
<li data-link="interfaces-generics#extensions-to-interfaces"><span>Extensions to Interfaces</span></li>
<li data-link="interfaces-generics#builtin-interfaces"><span>Builtin Interfaces</span></li>
</ul>
</li>
<li data-link="autodiff"><span>Automatic Differentiation</span>
<ul class="toc_list">
<li data-link="autodiff#using-automatic-differentiation-in-slang"><span>Using Automatic Differentiation in Slang</span></li>
<li data-link="autodiff#mathematic-concepts-and-terminologies"><span>Mathematic Concepts and Terminologies</span></li>
<li data-link="autodiff#differentiable-types"><span>Differentiable Types</span></li>
<li data-link="autodiff#forward-derivative-propagation-function"><span>Forward Derivative Propagation Function</span></li>
<li data-link="autodiff#backward-derivative-propagation-function"><span>Backward Derivative Propagation Function</span></li>
<li data-link="autodiff#builtin-differentiable-functions"><span>Builtin Differentiable Functions</span></li>
<li data-link="autodiff#primal-substitute-functions"><span>Primal Substitute Functions</span></li>
<li data-link="autodiff#working-with-mixed-differentiable-and-non-differentiable-code"><span>Working with Mixed Differentiable and Non-Differentiable Code</span></li>
<li data-link="autodiff#higher-order-differentiation"><span>Higher Order Differentiation</span></li>
<li data-link="autodiff#interactions-with-generics-and-interfaces"><span>Interactions with Generics and Interfaces</span></li>
<li data-link="autodiff#restrictions-of-automatic-differentiation"><span>Restrictions of Automatic Differentiation</span></li>
</ul>
</li>
<li data-link="compiling"><span>Compiling Code with Slang</span>
<ul class="toc_list">
<li data-link="compiling#concepts"><span>Concepts</span></li>
<li data-link="compiling#command-line-compilation-with-slangc"><span>Command-Line Compilation with `slangc`</span></li>
<li data-link="compiling#using-the-compilation-api"><span>Using the Compilation API</span></li>
<li data-link="compiling#multithreading"><span>Multithreading</span></li>
<li data-link="compiling#compiler-options"><span>Compiler Options</span></li>
<li data-link="compiling#debugging"><span>Debugging</span></li>
</ul>
</li>
<li data-link="reflection"><span>Using the Reflection API</span>
<ul class="toc_list">
<li data-link="reflection#program-reflection"><span>Program Reflection</span></li>
<li data-link="reflection#variable-layouts"><span>Variable Layouts</span></li>
<li data-link="reflection#type-layouts"><span>Type Layouts</span></li>
<li data-link="reflection#arrays"><span>Arrays</span></li>
<li data-link="reflection#structures"><span>Structures</span></li>
<li data-link="reflection#entry-points"><span>Entry Points</span></li>
</ul>
</li>
<li data-link="targets"><span>Supported Compilation Targets</span>
<ul class="toc_list">
<li data-link="targets#background-and-terminology"><span>Background and Terminology</span></li>
<li data-link="targets#direct3d-11"><span>Direct3D 11</span></li>
<li data-link="targets#direct3d-12"><span>Direct3D 12</span></li>
<li data-link="targets#vulkan"><span>Vulkan</span></li>
<li data-link="targets#opengl"><span>OpenGL</span></li>
<li data-link="targets#cuda-and-optix"><span>CUDA and OptiX</span></li>
<li data-link="targets#cpu-compute"><span>CPU Compute</span></li>
<li data-link="targets#summary"><span>Summary</span></li>
</ul>
</li>
<li data-link="link-time-specialization"><span>Link-time Specialization and Module Precompilation</span>
<ul class="toc_list">
<li data-link="link-time-specialization#link-time-constants"><span>Link-time Constants</span></li>
<li data-link="link-time-specialization#link-time-types"><span>Link-time Types</span></li>
<li data-link="link-time-specialization#providing-default-settings"><span>Providing Default Settings</span></li>
<li data-link="link-time-specialization#restrictions"><span>Restrictions</span></li>
<li data-link="link-time-specialization#using-precompiling-modules-with-the-api"><span>Using Precompiling Modules with the API</span></li>
<li data-link="link-time-specialization#additional-remarks"><span>Additional Remarks</span></li>
</ul>
</li>
<li data-link="a1-special-topics"><span>Special Topics</span>
<ul class="toc_list">
<li data-link="a1-01-matrix-layout"><span>Handling Matrix Layout Differences on Different Platforms</span>
<ul class="toc_list">
<li data-link="a1-01-matrix-layout#two-conventions-of-matrix-transform-math"><span>Two conventions of matrix transform math</span></li>
<li data-link="a1-01-matrix-layout#discussion"><span>Discussion</span></li>
<li data-link="a1-01-matrix-layout#matrix-layout"><span>Matrix Layout</span></li>
<li data-link="a1-01-matrix-layout#overriding-default-matrix-layout"><span>Overriding default matrix layout</span></li>
</ul>
</li>
<li data-link="a1-02-slangpy"><span>Using Slang to Write PyTorch Kernels</span>
<ul class="toc_list">
<li data-link="a1-02-slangpy#getting-started-with-slangpy"><span>Getting Started with slangpy</span></li>
<li data-link="a1-02-slangpy#specializing-shaders-using-slangpy"><span>Specializing shaders using slangpy</span></li>
<li data-link="a1-02-slangpy#back-propagating-derivatives-through-complex-access-patterns"><span>Back-propagating Derivatives through Complex Access Patterns</span></li>
<li data-link="a1-02-slangpy#manually-binding-kernels"><span>Manually binding kernels</span></li>
<li data-link="a1-02-slangpy#builtin-library-support-for-pytorch-interop"><span>Builtin Library Support for PyTorch Interop</span></li>
<li data-link="a1-02-slangpy#type-marshalling-between-slang-and-python"><span>Type Marshalling Between Slang and Python</span></li>
</ul>
</li>
<li data-link="a1-03-obfuscation"><span>Obfuscation</span>
<ul class="toc_list">
<li data-link="a1-03-obfuscation#obfuscation-in-slang"><span>Obfuscation in Slang</span></li>
<li data-link="a1-03-obfuscation#using-an-obfuscated-module"><span>Using An Obfuscated Module</span></li>
<li data-link="a1-03-obfuscation#accessing-source-maps"><span>Accessing Source Maps</span></li>
<li data-link="a1-03-obfuscation#accessing-source-maps-without-files"><span>Accessing Source Maps without Files</span></li>
<li data-link="a1-03-obfuscation#emit-source-maps"><span>Emit Source Maps</span></li>
<li data-link="a1-03-obfuscation#issuesfuture-work"><span>Issues/Future Work</span></li>
</ul>
</li>
<li data-link="a1-04-interop"><span>Interoperation with Target-Specific Code</span>
<ul class="toc_list">
<li data-link="a1-04-interop#defining-intrinsic-functions-for-textual-targets"><span>Defining Intrinsic Functions for Textual Targets</span></li>
<li data-link="a1-04-interop#defining-intrinsic-types"><span>Defining Intrinsic Types</span></li>
<li data-link="a1-04-interop#injecting-preludes"><span>Injecting Preludes</span></li>
<li data-link="a1-04-interop#managing-cross-platform-code"><span>Managing Cross-Platform Code</span></li>
<li data-link="a1-04-interop#inline-spirv-assembly"><span>Inline SPIRV Assembly</span></li>
</ul>
</li>
<li data-link="a1-05-uniformity"><span>Uniformity Analysis</span>
<ul class="toc_list">
<li data-link="a1-05-uniformity#treat-values-as-uniform"><span>Treat Values as Uniform</span></li>
<li data-link="a1-05-uniformity#treat-function-return-values-as-non-uniform"><span>Treat Function Return Values as Non-uniform</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>