1e5c31af7Sopenharmony_ci// Copyright 2015-2021 The Khronos Group Inc.
2e5c31af7Sopenharmony_ci//
3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: Apache-2.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ci= Math Test
6e5c31af7Sopenharmony_ci
7e5c31af7Sopenharmony_ciThis file (vkmath.txt) contains all the latexmath blocks and inlines in the
8e5c31af7Sopenharmony_ciVulkan spec and style guide, so we can see how they are rendered with
9e5c31af7Sopenharmony_cidifferent methods and output formats.
10e5c31af7Sopenharmony_ci
11e5c31af7Sopenharmony_ci== File chapters/fundamentals.txt
12e5c31af7Sopenharmony_ci
13e5c31af7Sopenharmony_ci=== latexmath block 1
14e5c31af7Sopenharmony_ci
15e5c31af7Sopenharmony_ci[latexmath]
16e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
17e5c31af7Sopenharmony_cif = { c \over { 2^b - 1 } }
18e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci=== latexmath block 2
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci[latexmath]
23e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24e5c31af7Sopenharmony_cif = \max\left( {c \over {2^{b-1} - 1}}, -1.0 \right)
25e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26e5c31af7Sopenharmony_ci
27e5c31af7Sopenharmony_ci== File chapters/interfaces.txt
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci=== latexmath inline 1
30e5c31af7Sopenharmony_ci
31e5c31af7Sopenharmony_cilatexmath:[(x,y,z,\frac{1}{w})]
32e5c31af7Sopenharmony_ci
33e5c31af7Sopenharmony_ci=== latexmath inline 2
34e5c31af7Sopenharmony_ci
35e5c31af7Sopenharmony_cilatexmath:[\frac{1}{w}]
36e5c31af7Sopenharmony_ci
37e5c31af7Sopenharmony_ci== File chapters/primsrast.txt
38e5c31af7Sopenharmony_ci
39e5c31af7Sopenharmony_ci=== latexmath block 3
40e5c31af7Sopenharmony_ci
41e5c31af7Sopenharmony_ci[latexmath]
42e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
43e5c31af7Sopenharmony_cis = {1 \over 2} + { \left( x_p - x_f \right) \over \text{size} }
44e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
45e5c31af7Sopenharmony_ci
46e5c31af7Sopenharmony_ci[latexmath]
47e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
48e5c31af7Sopenharmony_cit = {1 \over 2} + { \left( y_p - y_f \right) \over \text{size} }
49e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
50e5c31af7Sopenharmony_ci
51e5c31af7Sopenharmony_ci=== latexmath block 4
52e5c31af7Sopenharmony_ci
53e5c31af7Sopenharmony_ci[latexmath]
54e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
55e5c31af7Sopenharmony_cit = {{( \mathbf{p}_r - \mathbf{p}_a ) \cdot ( \mathbf{p}_b - \mathbf{p}_a )}
56e5c31af7Sopenharmony_ci    \over {\| \mathbf{p}_b - \mathbf{p}_a \|^2 }}
57e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
58e5c31af7Sopenharmony_ci
59e5c31af7Sopenharmony_ci=== latexmath block 5
60e5c31af7Sopenharmony_ci
61e5c31af7Sopenharmony_ci[latexmath]
62e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
63e5c31af7Sopenharmony_cif = {{ (1-t) {f_a / w_a} + t { f_b / w_b} } \over
64e5c31af7Sopenharmony_ci    {(1-t) / w_a + t / w_b }}
65e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
66e5c31af7Sopenharmony_ci
67e5c31af7Sopenharmony_ci=== latexmath block 6
68e5c31af7Sopenharmony_ci
69e5c31af7Sopenharmony_ci[latexmath]
70e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
71e5c31af7Sopenharmony_cia = -{1 \over 2}\sum_{i=0}^{n-1}
72e5c31af7Sopenharmony_ci      x_f^i y_f^{i \oplus 1} -
73e5c31af7Sopenharmony_ci      x_f^{i \oplus 1} y_f^i
74e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
75e5c31af7Sopenharmony_ci
76e5c31af7Sopenharmony_ci=== latexmath inline 3
77e5c31af7Sopenharmony_ci
78e5c31af7Sopenharmony_cilatexmath:[x_f^i] and latexmath:[y_f^i]
79e5c31af7Sopenharmony_ci
80e5c31af7Sopenharmony_ci=== latexmath block 7
81e5c31af7Sopenharmony_ci
82e5c31af7Sopenharmony_ci[latexmath]
83e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
84e5c31af7Sopenharmony_cia = {{\mathrm{A}(p p_b p_c)} \over {\mathrm{A}(p_a p_b p_c)}}, \quad
85e5c31af7Sopenharmony_cib = {{\mathrm{A}(p p_a p_c)} \over {\mathrm{A}(p_a p_b p_c)}}, \quad
86e5c31af7Sopenharmony_cic = {{\mathrm{A}(p p_a p_b)} \over {\mathrm{A}(p_a p_b p_c)}},
87e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
88e5c31af7Sopenharmony_ci
89e5c31af7Sopenharmony_ci=== latexmath block 8
90e5c31af7Sopenharmony_ci
91e5c31af7Sopenharmony_ci[latexmath]
92e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
93e5c31af7Sopenharmony_cif = { a {f_a / w_a} + b {f_b / w_b} + c {f_c / w_c} } \over
94e5c31af7Sopenharmony_ci    { {a / w_a} + {b / w_b} + {c / w_c} }
95e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
96e5c31af7Sopenharmony_ci
97e5c31af7Sopenharmony_ci== File chapters/fundamentals.txt
98e5c31af7Sopenharmony_ci
99e5c31af7Sopenharmony_ci=== latexmath block 9
100e5c31af7Sopenharmony_ci
101e5c31af7Sopenharmony_ci[latexmath]
102e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
103e5c31af7Sopenharmony_cif = { c \over { 2^b - 1 } }
104e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
105e5c31af7Sopenharmony_ci
106e5c31af7Sopenharmony_ci=== latexmath block 10
107e5c31af7Sopenharmony_ci
108e5c31af7Sopenharmony_ci[latexmath]
109e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110e5c31af7Sopenharmony_cif = \max\left( {c \over {2^{b-1} - 1}}, -1.0 \right)
111e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
112e5c31af7Sopenharmony_ci
113e5c31af7Sopenharmony_ci== File chapters/interfaces.txt
114e5c31af7Sopenharmony_ci
115e5c31af7Sopenharmony_ci=== latexmath inline 4
116e5c31af7Sopenharmony_ci
117e5c31af7Sopenharmony_cilatexmath:[(x,y,z,\frac{1}{w})]
118e5c31af7Sopenharmony_ci
119e5c31af7Sopenharmony_ci=== latexmath inline 5
120e5c31af7Sopenharmony_ci
121e5c31af7Sopenharmony_cilatexmath:[\frac{1}{w}].
122e5c31af7Sopenharmony_ci
123e5c31af7Sopenharmony_ci== File chapters/primsrast.txt
124e5c31af7Sopenharmony_ci
125e5c31af7Sopenharmony_ci=== latexmath block 11
126e5c31af7Sopenharmony_ci
127e5c31af7Sopenharmony_ci[latexmath]
128e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
129e5c31af7Sopenharmony_cis = {1 \over 2} + { \left( x_p - x_f \right) \over \text{size} }
130e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
131e5c31af7Sopenharmony_ci[latexmath]
132e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
133e5c31af7Sopenharmony_cit = {1 \over 2} + { \left( y_p - y_f \right) \over \text{size} }
134e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
135e5c31af7Sopenharmony_ci
136e5c31af7Sopenharmony_ci=== latexmath block 12
137e5c31af7Sopenharmony_ci
138e5c31af7Sopenharmony_ci[latexmath]
139e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
140e5c31af7Sopenharmony_cit = {{( \mathbf{p}_r - \mathbf{p}_a ) \cdot ( \mathbf{p}_b - \mathbf{p}_a )}
141e5c31af7Sopenharmony_ci    \over {\| \mathbf{p}_b - \mathbf{p}_a \|^2 }}
142e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
143e5c31af7Sopenharmony_ci
144e5c31af7Sopenharmony_ci=== latexmath block 13
145e5c31af7Sopenharmony_ci
146e5c31af7Sopenharmony_ci[latexmath]
147e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
148e5c31af7Sopenharmony_cif = {{ (1-t) {f_a / w_a} + t { f_b / w_b} } \over
149e5c31af7Sopenharmony_ci    {(1-t) / w_a + t / w_b }}
150e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
151e5c31af7Sopenharmony_ci
152e5c31af7Sopenharmony_ci=== latexmath block 14
153e5c31af7Sopenharmony_ci
154e5c31af7Sopenharmony_ci[latexmath]
155e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
156e5c31af7Sopenharmony_cia = -{1 \over 2}\sum_{i=0}^{n-1}
157e5c31af7Sopenharmony_ci      x_f^i y_f^{i \oplus 1} -
158e5c31af7Sopenharmony_ci      x_f^{i \oplus 1} y_f^i
159e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
160e5c31af7Sopenharmony_ci
161e5c31af7Sopenharmony_ci=== latexmath inline 6
162e5c31af7Sopenharmony_ci
163e5c31af7Sopenharmony_cilatexmath:[x_f^i] and latexmath:[y_f^i]
164e5c31af7Sopenharmony_ci
165e5c31af7Sopenharmony_ci=== latexmath block 15
166e5c31af7Sopenharmony_ci
167e5c31af7Sopenharmony_ci[latexmath]
168e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
169e5c31af7Sopenharmony_cia = {{\mathrm{A}(p p_b p_c)} \over {\mathrm{A}(p_a p_b p_c)}}, \quad
170e5c31af7Sopenharmony_cib = {{\mathrm{A}(p p_a p_c)} \over {\mathrm{A}(p_a p_b p_c)}}, \quad
171e5c31af7Sopenharmony_cic = {{\mathrm{A}(p p_a p_b)} \over {\mathrm{A}(p_a p_b p_c)}},
172e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
173e5c31af7Sopenharmony_ci
174e5c31af7Sopenharmony_ci=== latexmath block 16
175e5c31af7Sopenharmony_ci
176e5c31af7Sopenharmony_ci[latexmath]
177e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
178e5c31af7Sopenharmony_cif = { a {f_a / w_a} + b {f_b / w_b} + c {f_c / w_c} } \over
179e5c31af7Sopenharmony_ci    { {a / w_a} + {b / w_b} + {c / w_c} }
180e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
181e5c31af7Sopenharmony_ci
182e5c31af7Sopenharmony_ci=== latexmath block 17
183e5c31af7Sopenharmony_ci
184e5c31af7Sopenharmony_ci[latexmath]
185e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
186e5c31af7Sopenharmony_cif = \sum_{i=1}^{n} a_i f_i
187e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
188e5c31af7Sopenharmony_ci
189e5c31af7Sopenharmony_ci=== latexmath inline 7
190e5c31af7Sopenharmony_ci
191e5c31af7Sopenharmony_cilatexmath:[\sum_{i=1}^{n}a_i = 1].
192e5c31af7Sopenharmony_ci
193e5c31af7Sopenharmony_ci=== latexmath block 18
194e5c31af7Sopenharmony_ci
195e5c31af7Sopenharmony_ci[latexmath]
196e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
197e5c31af7Sopenharmony_cim = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2
198e5c31af7Sopenharmony_ci        +  \left({{\partial z_f} \over {\partial y_f}}\right)^2}
199e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
200e5c31af7Sopenharmony_ci
201e5c31af7Sopenharmony_ci=== latexmath block 19
202e5c31af7Sopenharmony_ci
203e5c31af7Sopenharmony_ci[latexmath]
204e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
205e5c31af7Sopenharmony_cim = \max\left( \left| {{\partial z_f} \over {\partial x_f}} \right|,
206e5c31af7Sopenharmony_ci               \left| {{\partial z_f} \over {\partial y_f}} \right| \right)
207e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
208e5c31af7Sopenharmony_ci
209e5c31af7Sopenharmony_ci=== latexmath block 20
210e5c31af7Sopenharmony_ci
211e5c31af7Sopenharmony_ci[latexmath]
212e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
213e5c31af7Sopenharmony_cio =
214e5c31af7Sopenharmony_ci\begin{cases}
215e5c31af7Sopenharmony_ci    m \times depthBiasSlopeFactor +
216e5c31af7Sopenharmony_ci         r \times depthBiasConstantFactor  & depthBiasClamp = 0\ or\ NaN \\
217e5c31af7Sopenharmony_ci    \min(m \times depthBiasSlopeFactor +
218e5c31af7Sopenharmony_ci         r \times depthBiasConstantFactor,
219e5c31af7Sopenharmony_ci         depthBiasClamp)                   & depthBiasClamp > 0  \\
220e5c31af7Sopenharmony_ci    \max(m \times depthBiasSlopeFactor +
221e5c31af7Sopenharmony_ci         r \times depthBiasConstantFactor,
222e5c31af7Sopenharmony_ci         depthBiasClamp)                   & depthBiasClamp < 0  \\
223e5c31af7Sopenharmony_ci\end{cases}
224e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
225e5c31af7Sopenharmony_ci
226e5c31af7Sopenharmony_ci== File chapters/tessellation.txt
227e5c31af7Sopenharmony_ci
228e5c31af7Sopenharmony_ci=== latexmath inline 8
229e5c31af7Sopenharmony_ci
230e5c31af7Sopenharmony_cilatexmath:[\frac{1}{n}, \frac{2}{n}, \ldots, \frac{n-1}{n}]
231e5c31af7Sopenharmony_ci
232e5c31af7Sopenharmony_ci== File chapters/textures.txt
233e5c31af7Sopenharmony_ci
234e5c31af7Sopenharmony_ci=== latexmath block 21
235e5c31af7Sopenharmony_ci
236e5c31af7Sopenharmony_ci[latexmath]
237e5c31af7Sopenharmony_ci+++++++++++++++++++
238e5c31af7Sopenharmony_ci\begin{aligned}
239e5c31af7Sopenharmony_ciN               & = 9  & \text{number of mantissa bits per component} \\
240e5c31af7Sopenharmony_ciB               & = 15 & \text{exponent bias} \\
241e5c31af7Sopenharmony_ciE_{max}         & = 31 & \text{maximum possible biased exponent value} \\
242e5c31af7Sopenharmony_cisharedexp_{max} & = \frac{(2^N-1)}{2^N} \times 2^{(E_{max}-B)}
243e5c31af7Sopenharmony_ci\end{aligned}
244e5c31af7Sopenharmony_ci+++++++++++++++++++
245e5c31af7Sopenharmony_ci
246e5c31af7Sopenharmony_ci=== latexmath block 22
247e5c31af7Sopenharmony_ci
248e5c31af7Sopenharmony_ci[latexmath]
249e5c31af7Sopenharmony_ci+++++++++++++++++++
250e5c31af7Sopenharmony_ci\begin{aligned}
251e5c31af7Sopenharmony_ciexp' =
252e5c31af7Sopenharmony_ci  \begin{cases}
253e5c31af7Sopenharmony_ci    \left \lfloor \log_2(max_{clamped}) \right \rfloor + (B+1)
254e5c31af7Sopenharmony_ci      & \text{for}\  max_{clamped} > 2^{-(B+1)} \\
255e5c31af7Sopenharmony_ci    0
256e5c31af7Sopenharmony_ci      & \text{for}\  max_{clamped} \leq 2^{-(B+1)}
257e5c31af7Sopenharmony_ci  \end{cases}
258e5c31af7Sopenharmony_ci\end{aligned}
259e5c31af7Sopenharmony_ci+++++++++++++++++++
260e5c31af7Sopenharmony_ci
261e5c31af7Sopenharmony_ci=== latexmath block 23
262e5c31af7Sopenharmony_ci
263e5c31af7Sopenharmony_ci[latexmath]
264e5c31af7Sopenharmony_ci+++++++++++++++++++
265e5c31af7Sopenharmony_ci\begin{aligned}
266e5c31af7Sopenharmony_cimax_{shared} =
267e5c31af7Sopenharmony_ci\left \lfloor
268e5c31af7Sopenharmony_ci\frac{max_{clamped}}{2^{(exp'-B-N)}}+\frac{1}{2}
269e5c31af7Sopenharmony_ci\right \rfloor
270e5c31af7Sopenharmony_ci\end{aligned}
271e5c31af7Sopenharmony_ci+++++++++++++++++++
272e5c31af7Sopenharmony_ci
273e5c31af7Sopenharmony_ci=== latexmath block 24
274e5c31af7Sopenharmony_ci
275e5c31af7Sopenharmony_ci[latexmath]
276e5c31af7Sopenharmony_ci+++++++++++++++++++
277e5c31af7Sopenharmony_ci\begin{aligned}
278e5c31af7Sopenharmony_ciexp_{shared} =
279e5c31af7Sopenharmony_ci  \begin{cases}
280e5c31af7Sopenharmony_ci    exp'   & \text{for}\  0 \leq max_{shared} < 2^N \\
281e5c31af7Sopenharmony_ci    exp'+1 & \text{for}\  max_{shared} = 2^N
282e5c31af7Sopenharmony_ci  \end{cases}
283e5c31af7Sopenharmony_ci\end{aligned}
284e5c31af7Sopenharmony_ci+++++++++++++++++++
285e5c31af7Sopenharmony_ci
286e5c31af7Sopenharmony_ci=== latexmath block 25
287e5c31af7Sopenharmony_ci
288e5c31af7Sopenharmony_ci[latexmath]
289e5c31af7Sopenharmony_ci+++++++++++++++++++
290e5c31af7Sopenharmony_ci\begin{aligned}
291e5c31af7Sopenharmony_cired_{shared} & =
292e5c31af7Sopenharmony_ci    \left \lfloor
293e5c31af7Sopenharmony_ci    \frac{red_{clamped}}{2^{(exp_{shared}-B-N)}}+ \frac{1}{2}
294e5c31af7Sopenharmony_ci    \right \rfloor \\
295e5c31af7Sopenharmony_cigreen_{shared} & =
296e5c31af7Sopenharmony_ci    \left \lfloor
297e5c31af7Sopenharmony_ci    \frac{green_{clamped}}{2^{(exp_{shared}-B-N)}}+ \frac{1}{2}
298e5c31af7Sopenharmony_ci    \right \rfloor \\
299e5c31af7Sopenharmony_ciblue_{shared} & =
300e5c31af7Sopenharmony_ci    \left \lfloor
301e5c31af7Sopenharmony_ci    \frac{blue_{clamped}}{2^{(exp_{shared}-B-N)}}+ \frac{1}{2}
302e5c31af7Sopenharmony_ci    \right \rfloor
303e5c31af7Sopenharmony_ci\end{aligned}
304e5c31af7Sopenharmony_ci+++++++++++++++++++
305e5c31af7Sopenharmony_ci
306e5c31af7Sopenharmony_ci=== latexmath block 26
307e5c31af7Sopenharmony_ci
308e5c31af7Sopenharmony_ci[latexmath]
309e5c31af7Sopenharmony_ci+++++++++++++++++++
310e5c31af7Sopenharmony_ci\begin{aligned}
311e5c31af7Sopenharmony_ciD & = 1.0 &
312e5c31af7Sopenharmony_ci  \begin{cases}
313e5c31af7Sopenharmony_ci    D_{ref} \leq D & \text{for LEQUAL}   \\
314e5c31af7Sopenharmony_ci    D_{ref} \geq D & \text{for GEQUAL}   \\
315e5c31af7Sopenharmony_ci    D_{ref} < D    & \text{for LESS}     \\
316e5c31af7Sopenharmony_ci    D_{ref} > D    & \text{for GREATER}  \\
317e5c31af7Sopenharmony_ci    D_{ref} = D    & \text{for EQUAL}    \\
318e5c31af7Sopenharmony_ci    D_{ref} \neq D & \text{for NOTEQUAL} \\
319e5c31af7Sopenharmony_ci    true           & \text{for ALWAYS}   \\
320e5c31af7Sopenharmony_ci    false          & \text{for NEVER}
321e5c31af7Sopenharmony_ci  \end{cases} \\
322e5c31af7Sopenharmony_ciD & = 0.0 & \text{otherwise}
323e5c31af7Sopenharmony_ci\end{aligned}
324e5c31af7Sopenharmony_ci+++++++++++++++++++
325e5c31af7Sopenharmony_ci
326e5c31af7Sopenharmony_ci=== latexmath block 27
327e5c31af7Sopenharmony_ci
328e5c31af7Sopenharmony_ci[latexmath]
329e5c31af7Sopenharmony_ci+++++++++++++++++++
330e5c31af7Sopenharmony_ci\begin{aligned}
331e5c31af7Sopenharmony_ciC'_{rgba}[R] & =
332e5c31af7Sopenharmony_ci  \begin{cases}
333e5c31af7Sopenharmony_ci    C_{rgba}[R] & \text{for RED swizzle}   \\
334e5c31af7Sopenharmony_ci    C_{rgba}[G] & \text{for GREEN swizzle} \\
335e5c31af7Sopenharmony_ci    C_{rgba}[B] & \text{for BLUE swizzle}  \\
336e5c31af7Sopenharmony_ci    C_{rgba}[A] & \text{for ALPHA swizzle} \\
337e5c31af7Sopenharmony_ci    0           & \text{for ZERO swizzle}  \\
338e5c31af7Sopenharmony_ci    one         & \text{for ONE swizzle} \\
339e5c31af7Sopenharmony_ci    C_{rgba}[R] & \text{for IDENTITY swizzle}
340e5c31af7Sopenharmony_ci  \end{cases}
341e5c31af7Sopenharmony_ci\end{aligned}
342e5c31af7Sopenharmony_ci+++++++++++++++++++
343e5c31af7Sopenharmony_ci
344e5c31af7Sopenharmony_ci=== latexmath block 28
345e5c31af7Sopenharmony_ci
346e5c31af7Sopenharmony_ci[latexmath]
347e5c31af7Sopenharmony_ci+++++++++++++++++++
348e5c31af7Sopenharmony_ci\begin{aligned}
349e5c31af7Sopenharmony_ciC_{rgba}[R] & \text{is the RED component} \\
350e5c31af7Sopenharmony_ciC_{rgba}[G] & \text{is the GREEN component} \\
351e5c31af7Sopenharmony_ciC_{rgba}[B] & \text{is the BLUE component} \\
352e5c31af7Sopenharmony_ciC_{rgba}[A] & \text{is the ALPHA component} \\
353e5c31af7Sopenharmony_cione         & = 1.0\text{f}  & \text{for floating point components} \\
354e5c31af7Sopenharmony_cione         & = 1              & \text{for integer components}
355e5c31af7Sopenharmony_ci\end{aligned}
356e5c31af7Sopenharmony_ci+++++++++++++++++++
357e5c31af7Sopenharmony_ci
358e5c31af7Sopenharmony_ci=== latexmath block 29
359e5c31af7Sopenharmony_ci
360e5c31af7Sopenharmony_ci[latexmath]
361e5c31af7Sopenharmony_ci+++++++++++++++++++
362e5c31af7Sopenharmony_ci\begin{aligned}
363e5c31af7Sopenharmony_cidPdx_{i_1,j_0} & = dPdx_{i_0,j_0} & = P_{i_1,j_0} - P_{i_0,j_0}  \\
364e5c31af7Sopenharmony_cidPdx_{i_1,j_1} & = dPdx_{i_0,j_1} & = P_{i_1,j_1} - P_{i_0,j_1}  \\
365e5c31af7Sopenharmony_ci\\
366e5c31af7Sopenharmony_cidPdy_{i_0,j_1} & = dPdy_{i_0,j_0} & = P_{i_0,j_1} - P_{i_0,j_0}  \\
367e5c31af7Sopenharmony_cidPdy_{i_1,j_1} & = dPdy_{i_1,j_0} & = P_{i_1,j_1} - P_{i_1,j_0}
368e5c31af7Sopenharmony_ci\end{aligned}
369e5c31af7Sopenharmony_ci+++++++++++++++++++
370e5c31af7Sopenharmony_ci
371e5c31af7Sopenharmony_ci=== latexmath block 30
372e5c31af7Sopenharmony_ci
373e5c31af7Sopenharmony_ci[latexmath]
374e5c31af7Sopenharmony_ci+++++++++++++++++++
375e5c31af7Sopenharmony_ci\begin{aligned}
376e5c31af7Sopenharmony_cidPdx & =
377e5c31af7Sopenharmony_ci  \begin{cases}
378e5c31af7Sopenharmony_ci    dPdx_{i_0,j_0} & \text{preferred}\\
379e5c31af7Sopenharmony_ci    dPdx_{i_0,j_1}
380e5c31af7Sopenharmony_ci  \end{cases} \\
381e5c31af7Sopenharmony_cidPdy & =
382e5c31af7Sopenharmony_ci  \begin{cases}
383e5c31af7Sopenharmony_ci    dPdy_{i_0,j_0} & \text{preferred}\\
384e5c31af7Sopenharmony_ci    dPdy_{i_1,j_0}
385e5c31af7Sopenharmony_ci  \end{cases}
386e5c31af7Sopenharmony_ci\end{aligned}
387e5c31af7Sopenharmony_ci+++++++++++++++++++
388e5c31af7Sopenharmony_ci
389e5c31af7Sopenharmony_ci=== latexmath block 31
390e5c31af7Sopenharmony_ci
391e5c31af7Sopenharmony_ci[latexmath]
392e5c31af7Sopenharmony_ci+++++++++++++++++++
393e5c31af7Sopenharmony_ci\begin{aligned}
394e5c31af7Sopenharmony_cis       & = \frac{s}{q},       & \text{for 1D, 2D, or 3D image} \\
395e5c31af7Sopenharmony_ci\\
396e5c31af7Sopenharmony_cit       & = \frac{t}{q},       & \text{for 2D or 3D image} \\
397e5c31af7Sopenharmony_ci\\
398e5c31af7Sopenharmony_cir       & = \frac{r}{q},       & \text{for 3D image} \\
399e5c31af7Sopenharmony_ci\\
400e5c31af7Sopenharmony_ciD_{ref} & = \frac{D_{ref}}{q}, & \text{if provided}
401e5c31af7Sopenharmony_ci\end{aligned}
402e5c31af7Sopenharmony_ci+++++++++++++++++++
403e5c31af7Sopenharmony_ci
404e5c31af7Sopenharmony_ci
405e5c31af7Sopenharmony_ci=== latexmath block 32
406e5c31af7Sopenharmony_ci
407e5c31af7Sopenharmony_ci[latexmath]
408e5c31af7Sopenharmony_ci+++++++++++++++++++
409e5c31af7Sopenharmony_ci\begin{aligned}
410e5c31af7Sopenharmony_ci\partial{s}/\partial{x} & = dPdx(s), & \partial{s}/\partial{y} & = dPdy(s), & \text{for 1D, 2D, Cube, or 3D image} \\
411e5c31af7Sopenharmony_ci\partial{t}/\partial{x} & = dPdx(t), & \partial{t}/\partial{y} & = dPdy(t), & \text{for 2D, Cube, or 3D image} \\
412e5c31af7Sopenharmony_ci\partial{u}/\partial{x} & = dPdx(u), & \partial{u}/\partial{y} & = dPdy(u), & \text{for Cube or 3D image}
413e5c31af7Sopenharmony_ci\end{aligned}
414e5c31af7Sopenharmony_ci+++++++++++++++++++
415e5c31af7Sopenharmony_ci
416e5c31af7Sopenharmony_ci=== latexmath block 33
417e5c31af7Sopenharmony_ci
418e5c31af7Sopenharmony_ci[latexmath]
419e5c31af7Sopenharmony_ci++++++++++++++++++++++++
420e5c31af7Sopenharmony_ci\begin{aligned}
421e5c31af7Sopenharmony_cis_{face} & =
422e5c31af7Sopenharmony_ci    \frac{1}{2} \times \frac{s_c}{|r_c|} + \frac{1}{2} \\
423e5c31af7Sopenharmony_cit_{face} & =
424e5c31af7Sopenharmony_ci    \frac{1}{2} \times \frac{t_c}{|r_c|} + \frac{1}{2} \\
425e5c31af7Sopenharmony_ci\end{aligned}
426e5c31af7Sopenharmony_ci++++++++++++++++++++++++
427e5c31af7Sopenharmony_ci
428e5c31af7Sopenharmony_ci=== latexmath block 34
429e5c31af7Sopenharmony_ci
430e5c31af7Sopenharmony_ci[latexmath]
431e5c31af7Sopenharmony_ci++++++++++++++++++++++++
432e5c31af7Sopenharmony_ci\begin{aligned}
433e5c31af7Sopenharmony_ci\frac{\partial{s_{face}}}{\partial{x}} &=
434e5c31af7Sopenharmony_ci    \frac{\partial}{\partial{x}} \left ( \frac{1}{2} \times \frac{s_{c}}{|r_{c}|}
435e5c31af7Sopenharmony_ci    + \frac{1}{2}\right ) \\
436e5c31af7Sopenharmony_ci\frac{\partial{s_{face}}}{\partial{x}} &=
437e5c31af7Sopenharmony_ci    \frac{1}{2} \times \frac{\partial}{\partial{x}}
438e5c31af7Sopenharmony_ci    \left ( \frac{s_{c}}{|r_{c}|}  \right ) \\
439e5c31af7Sopenharmony_ci\frac{\partial{s_{face}}}{\partial{x}} &=
440e5c31af7Sopenharmony_ci    \frac{1}{2} \times
441e5c31af7Sopenharmony_ci    \left (
442e5c31af7Sopenharmony_ci    \frac{
443e5c31af7Sopenharmony_ci      |r_{c}| \times \partial{s_c}/\partial{x}
444e5c31af7Sopenharmony_ci      -s_c \times {\partial{r_{c}}}/{\partial{x}}}
445e5c31af7Sopenharmony_ci    {\left ( r_{c} \right )^2}
446e5c31af7Sopenharmony_ci    \right )
447e5c31af7Sopenharmony_ci\end{aligned}
448e5c31af7Sopenharmony_ci++++++++++++++++++++++++
449e5c31af7Sopenharmony_ci
450e5c31af7Sopenharmony_ci=== latexmath block 35
451e5c31af7Sopenharmony_ci
452e5c31af7Sopenharmony_ci[latexmath]
453e5c31af7Sopenharmony_ci++++++++++++++++++++++++
454e5c31af7Sopenharmony_ci\begin{aligned}
455e5c31af7Sopenharmony_ci\frac{\partial{s_{face}}}{\partial{y}} &=
456e5c31af7Sopenharmony_ci    \frac{1}{2} \times
457e5c31af7Sopenharmony_ci    \left (
458e5c31af7Sopenharmony_ci    \frac{
459e5c31af7Sopenharmony_ci      |r_{c}| \times \partial{s_c}/\partial{y}
460e5c31af7Sopenharmony_ci      -s_c \times {\partial{r_{c}}}/{\partial{y}}}
461e5c31af7Sopenharmony_ci    {\left ( r_{c} \right )^2}
462e5c31af7Sopenharmony_ci    \right )\\
463e5c31af7Sopenharmony_ci\frac{\partial{t_{face}}}{\partial{x}} &=
464e5c31af7Sopenharmony_ci    \frac{1}{2} \times
465e5c31af7Sopenharmony_ci    \left (
466e5c31af7Sopenharmony_ci    \frac{
467e5c31af7Sopenharmony_ci      |r_{c}| \times \partial{t_c}/\partial{x}
468e5c31af7Sopenharmony_ci      -t_c \times {\partial{r_{c}}}/{\partial{x}}}
469e5c31af7Sopenharmony_ci    {\left ( r_{c} \right )^2}
470e5c31af7Sopenharmony_ci    \right ) \\
471e5c31af7Sopenharmony_ci\frac{\partial{t_{face}}}{\partial{y}} &=
472e5c31af7Sopenharmony_ci    \frac{1}{2} \times
473e5c31af7Sopenharmony_ci    \left (
474e5c31af7Sopenharmony_ci    \frac{
475e5c31af7Sopenharmony_ci       |r_{c}| \times \partial{t_c}/\partial{y}
476e5c31af7Sopenharmony_ci      -t_c \times {\partial{r_{c}}}/{\partial{y}}}
477e5c31af7Sopenharmony_ci    {\left ( r_{c} \right )^2}
478e5c31af7Sopenharmony_ci    \right )
479e5c31af7Sopenharmony_ci\end{aligned}
480e5c31af7Sopenharmony_ci++++++++++++++++++++++++
481e5c31af7Sopenharmony_ci
482e5c31af7Sopenharmony_ci=== latexmath block 36
483e5c31af7Sopenharmony_ci
484e5c31af7Sopenharmony_ci[latexmath]
485e5c31af7Sopenharmony_ci++++++++++++++++++++++++
486e5c31af7Sopenharmony_ci\begin{aligned}
487e5c31af7Sopenharmony_ci\rho_{x} & = \sqrt{ m_{ux} ^{2} + m_{vx} ^{2} + m_{wx} ^{2} } \\
488e5c31af7Sopenharmony_ci\rho_{y} & = \sqrt{ m_{uy} ^{2} + m_{vy} ^{2} + m_{wy} ^{2} }
489e5c31af7Sopenharmony_ci\end{aligned}
490e5c31af7Sopenharmony_ci++++++++++++++++++++++++
491e5c31af7Sopenharmony_ci
492e5c31af7Sopenharmony_ci=== latexmath block 37
493e5c31af7Sopenharmony_ci
494e5c31af7Sopenharmony_ci  {empty}:: [eq]#f~x~# is continuous and monotonically increasing in each of
495e5c31af7Sopenharmony_ci     [eq]#m~ux~#, [eq]#m~vx~#, and [eq]#m~wx~#
496e5c31af7Sopenharmony_ci  {empty}:: [eq]#f~y~# is continuous and monotonically increasing in each of
497e5c31af7Sopenharmony_ci     [eq]#m~uy~#, [eq]#m~vy~#, and [eq]#m~wy~#
498e5c31af7Sopenharmony_ci  {empty}:: [eq]#max({vert}m~ux~{vert}, {vert}m~vx~{vert},
499e5c31af7Sopenharmony_ci     {vert}m~wx~{vert}) {leq} f~x~ {leq} {vert}m~ux~{vert} {plus}
500e5c31af7Sopenharmony_ci     {vert}m~vx~{vert} {plus} {vert}m~wx~{vert}#
501e5c31af7Sopenharmony_ci  {empty}:: [eq]#max({vert}m~uy~{vert}, {vert}m~vy~{vert},
502e5c31af7Sopenharmony_ci     {vert}m~wy~{vert}) {leq} f~y~ {leq} {vert}m~uy~{vert} {plus}
503e5c31af7Sopenharmony_ci     {vert}m~vy~{vert} {plus} {vert}m~wy~{vert}#
504e5c31af7Sopenharmony_ci
505e5c31af7Sopenharmony_ci=== latexmath block 38
506e5c31af7Sopenharmony_ci
507e5c31af7Sopenharmony_ci[latexmath]
508e5c31af7Sopenharmony_ci++++++++++++++++++++++++
509e5c31af7Sopenharmony_ci\begin{aligned}
510e5c31af7Sopenharmony_ciN & = \min \left (\left \lceil \frac{\rho_{max}}{\rho_{min}}  \right \rceil ,max_{Aniso} \right )
511e5c31af7Sopenharmony_ci\end{aligned}
512e5c31af7Sopenharmony_ci++++++++++++++++++++++++
513e5c31af7Sopenharmony_ci
514e5c31af7Sopenharmony_ci=== latexmath block 39
515e5c31af7Sopenharmony_ci
516e5c31af7Sopenharmony_ci[latexmath]
517e5c31af7Sopenharmony_ci++++++++++++++++++++++++
518e5c31af7Sopenharmony_ci\begin{aligned}
519e5c31af7Sopenharmony_ci\lambda_{base}(x,y) & =
520e5c31af7Sopenharmony_ci  \begin{cases}
521e5c31af7Sopenharmony_ci    shaderOp.Lod                                 & \text{(from optional SPIR-V operand)} \\
522e5c31af7Sopenharmony_ci    \log_2 \left ( \frac{\rho_{max}}{N} \right ) & \text{otherwise}
523e5c31af7Sopenharmony_ci  \end{cases} \\
524e5c31af7Sopenharmony_ci\lambda'(x,y)       & = \lambda_{base} + \mathbin{clamp}(sampler.bias + shaderOp.bias,-maxSamplerLodBias,maxSamplerLodBias) \\
525e5c31af7Sopenharmony_ci\lambda             & =
526e5c31af7Sopenharmony_ci  \begin{cases}
527e5c31af7Sopenharmony_ci    lod_{max}, & \lambda' > lod_{max} \\
528e5c31af7Sopenharmony_ci    \lambda',  & lod_{min} \leq \lambda' \leq lod_{max} \\
529e5c31af7Sopenharmony_ci    lod_{min}, & \lambda' < lod_{min} \\
530e5c31af7Sopenharmony_ci    undefined, & lod_{min} > lod_{max} \\
531e5c31af7Sopenharmony_ci  \end{cases}
532e5c31af7Sopenharmony_ci\end{aligned}
533e5c31af7Sopenharmony_ci++++++++++++++++++++++++
534e5c31af7Sopenharmony_ci
535e5c31af7Sopenharmony_ci=== latexmath block 40
536e5c31af7Sopenharmony_ci
537e5c31af7Sopenharmony_ci[latexmath]
538e5c31af7Sopenharmony_ci++++++++++++++++++++++++
539e5c31af7Sopenharmony_ci\begin{aligned}
540e5c31af7Sopenharmony_cisampler.bias       & = mipLodBias & \text{(from sampler descriptor)} \\
541e5c31af7Sopenharmony_cishaderOp.bias      & =
542e5c31af7Sopenharmony_ci  \begin{cases}
543e5c31af7Sopenharmony_ci    Bias & \text{(from optional SPIR-V operand)} \\
544e5c31af7Sopenharmony_ci    0    & \text{otherwise}
545e5c31af7Sopenharmony_ci  \end{cases} \\
546e5c31af7Sopenharmony_cisampler.lod_{min}  & = minLod & \text{(from sampler descriptor)} \\
547e5c31af7Sopenharmony_cishaderOp.lod_{min} & =
548e5c31af7Sopenharmony_ci  \begin{cases}
549e5c31af7Sopenharmony_ci    MinLod & \text{(from optional SPIR-V operand)} \\
550e5c31af7Sopenharmony_ci    0      & \text{otherwise}
551e5c31af7Sopenharmony_ci  \end{cases} \\
552e5c31af7Sopenharmony_ci\\
553e5c31af7Sopenharmony_cilod_{min}          & = \max(sampler.lod_{min}, shaderOp.lod_{min}) \\
554e5c31af7Sopenharmony_cilod_{max}          & = maxLod & \text{(from sampler descriptor)}
555e5c31af7Sopenharmony_ci\end{aligned}
556e5c31af7Sopenharmony_ci++++++++++++++++++++++++
557e5c31af7Sopenharmony_ci
558e5c31af7Sopenharmony_ci=== latexmath block 41
559e5c31af7Sopenharmony_ci
560e5c31af7Sopenharmony_ci[latexmath]
561e5c31af7Sopenharmony_ci++++++++++++++++++++++++
562e5c31af7Sopenharmony_ci\begin{aligned}
563e5c31af7Sopenharmony_cid =
564e5c31af7Sopenharmony_ci  \begin{cases}
565e5c31af7Sopenharmony_ci    level_{base},     & \lambda \leq \frac{1}{2} \\[.5em]
566e5c31af7Sopenharmony_ci    nearest(\lambda), & \lambda > \frac{1}{2},
567e5c31af7Sopenharmony_ci                        level_{base} + \lambda \leq
568e5c31af7Sopenharmony_ci                        q + \frac{1}{2} \\[.5em]
569e5c31af7Sopenharmony_ci    q,                & \lambda > \frac{1}{2},
570e5c31af7Sopenharmony_ci                        level_{base} + \lambda > q + \frac{1}{2}
571e5c31af7Sopenharmony_ci  \end{cases}
572e5c31af7Sopenharmony_ci\end{aligned}
573e5c31af7Sopenharmony_ci++++++++++++++++++++++++
574e5c31af7Sopenharmony_ci
575e5c31af7Sopenharmony_ci=== latexmath block 42
576e5c31af7Sopenharmony_ci
577e5c31af7Sopenharmony_ci[latexmath]
578e5c31af7Sopenharmony_ci++++++++++++++++++++++++
579e5c31af7Sopenharmony_ci\begin{aligned}
580e5c31af7Sopenharmony_cinearest(\lambda) & =
581e5c31af7Sopenharmony_ci  \begin{cases}
582e5c31af7Sopenharmony_ci    \left \lceil level_{base}+\lambda + \frac{1}{2}\right \rceil - 1, &
583e5c31af7Sopenharmony_ci        \text{preferred} \\
584e5c31af7Sopenharmony_ci    \left \lfloor level_{base}+\lambda + \frac{1}{2}\right \rfloor,   &
585e5c31af7Sopenharmony_ci        \text{alternative}
586e5c31af7Sopenharmony_ci  \end{cases}
587e5c31af7Sopenharmony_ci\end{aligned}
588e5c31af7Sopenharmony_ci++++++++++++++++++++++++
589e5c31af7Sopenharmony_ci
590e5c31af7Sopenharmony_ci=== latexmath block 43
591e5c31af7Sopenharmony_ci
592e5c31af7Sopenharmony_ci[latexmath]
593e5c31af7Sopenharmony_ci++++++++++++++++++++++++
594e5c31af7Sopenharmony_ci\begin{aligned}
595e5c31af7Sopenharmony_cid_{hi} & =
596e5c31af7Sopenharmony_ci  \begin{cases}
597e5c31af7Sopenharmony_ci    q,                                                 & level_{base} + \lambda \geq q \\
598e5c31af7Sopenharmony_ci    \left \lfloor level_{base}+\lambda \right \rfloor, & \text{otherwise}
599e5c31af7Sopenharmony_ci  \end{cases} \\
600e5c31af7Sopenharmony_cid_{lo} & =
601e5c31af7Sopenharmony_ci  \begin{cases}
602e5c31af7Sopenharmony_ci    q,        & level_{base} + \lambda \geq q \\
603e5c31af7Sopenharmony_ci    d_{hi}+1, & \text{otherwise}
604e5c31af7Sopenharmony_ci  \end{cases}
605e5c31af7Sopenharmony_ci\end{aligned}
606e5c31af7Sopenharmony_ci++++++++++++++++++++++++
607e5c31af7Sopenharmony_ci
608e5c31af7Sopenharmony_ci=== latexmath block 44
609e5c31af7Sopenharmony_ci
610e5c31af7Sopenharmony_ci[latexmath]
611e5c31af7Sopenharmony_ci++++++++++++++++++++++++
612e5c31af7Sopenharmony_ci\begin{aligned}
613e5c31af7Sopenharmony_ciu(x,y) & = s(x,y) \times width_{level} \\
614e5c31af7Sopenharmony_civ(x,y) & =
615e5c31af7Sopenharmony_ci  \begin{cases}
616e5c31af7Sopenharmony_ci    0                         & \text{for 1D images} \\
617e5c31af7Sopenharmony_ci    t(x,y) \times height_{level} & \text{otherwise}
618e5c31af7Sopenharmony_ci  \end{cases} \\
619e5c31af7Sopenharmony_ciw(x,y) & =
620e5c31af7Sopenharmony_ci  \begin{cases}
621e5c31af7Sopenharmony_ci    0                         & \text{for 2D or Cube images} \\
622e5c31af7Sopenharmony_ci    r(x,y) \times depth_{level}  & \text{otherwise}
623e5c31af7Sopenharmony_ci  \end{cases} \\
624e5c31af7Sopenharmony_ci\\
625e5c31af7Sopenharmony_cia(x,y) & =
626e5c31af7Sopenharmony_ci  \begin{cases}
627e5c31af7Sopenharmony_ci    a(x,y)                    & \text{for array images} \\
628e5c31af7Sopenharmony_ci    0                         & \text{otherwise}
629e5c31af7Sopenharmony_ci  \end{cases}
630e5c31af7Sopenharmony_ci\end{aligned}
631e5c31af7Sopenharmony_ci++++++++++++++++++++++++
632e5c31af7Sopenharmony_ci
633e5c31af7Sopenharmony_ci=== latexmath block 45
634e5c31af7Sopenharmony_ci
635e5c31af7Sopenharmony_ci[latexmath]
636e5c31af7Sopenharmony_ci++++++++++++++++++++++++
637e5c31af7Sopenharmony_ci\begin{aligned}
638e5c31af7Sopenharmony_ci\mathbin{RNE}(a) & =
639e5c31af7Sopenharmony_ci  \begin{cases}
640e5c31af7Sopenharmony_ci    \mathbin{roundTiesToEven}(a)                  & \text{preferred, from IEEE Std 754-2008 Floating-Point Arithmetic} \\
641e5c31af7Sopenharmony_ci    \left \lfloor a + \frac{1}{2} \right \rfloor & \text{alternative}
642e5c31af7Sopenharmony_ci  \end{cases}
643e5c31af7Sopenharmony_ci\end{aligned}
644e5c31af7Sopenharmony_ci++++++++++++++++++++++++
645e5c31af7Sopenharmony_ci
646e5c31af7Sopenharmony_ci=== latexmath block 46
647e5c31af7Sopenharmony_ci
648e5c31af7Sopenharmony_ci[latexmath]
649e5c31af7Sopenharmony_ci++++++++++++++++++++++++
650e5c31af7Sopenharmony_ci\begin{aligned}
651e5c31af7Sopenharmony_cii &=
652e5c31af7Sopenharmony_ci  \begin{cases}
653e5c31af7Sopenharmony_ci    i \bmod size                                & \text{for repeat} \\
654e5c31af7Sopenharmony_ci    (size-1) - \mathbin{mirror}
655e5c31af7Sopenharmony_ci        ((i \bmod (2 \times size)) - size)      & \text{for mirrored repeat} \\
656e5c31af7Sopenharmony_ci    \mathbin{clamp}(i,0,size-1)                  & \text{for clamp to edge} \\
657e5c31af7Sopenharmony_ci    \mathbin{clamp}(i,-1,size)                   & \text{for clamp to border} \\
658e5c31af7Sopenharmony_ci    \mathbin{clamp}(\mathbin{mirror}(i),0,size-1) & \text{for mirror clamp to edge}
659e5c31af7Sopenharmony_ci  \end{cases}
660e5c31af7Sopenharmony_ci\end{aligned}
661e5c31af7Sopenharmony_ci++++++++++++++++++++++++
662e5c31af7Sopenharmony_ci
663e5c31af7Sopenharmony_ci
664e5c31af7Sopenharmony_ci=== latexmath block 47
665e5c31af7Sopenharmony_ci
666e5c31af7Sopenharmony_ci[latexmath]
667e5c31af7Sopenharmony_ci++++++++++++++++++++++++
668e5c31af7Sopenharmony_ci\begin{aligned}
669e5c31af7Sopenharmony_ci& \mathbin{mirror}(n) =
670e5c31af7Sopenharmony_ci  \begin{cases}
671e5c31af7Sopenharmony_ci    n      & \text{for}\  n \geq 0 \\
672e5c31af7Sopenharmony_ci    -(1+n) & \text{otherwise}
673e5c31af7Sopenharmony_ci  \end{cases}
674e5c31af7Sopenharmony_ci\end{aligned}
675e5c31af7Sopenharmony_ci++++++++++++++++++++++++
676e5c31af7Sopenharmony_ci
677e5c31af7Sopenharmony_ci=== latexmath block 48
678e5c31af7Sopenharmony_ci
679e5c31af7Sopenharmony_ci[latexmath]
680e5c31af7Sopenharmony_ci++++++++++++++++++++++++
681e5c31af7Sopenharmony_ci\begin{aligned}
682e5c31af7Sopenharmony_ci\tau[R] &= \tau_{i0j1}[level_{base}][comp] \\
683e5c31af7Sopenharmony_ci\tau[G] &= \tau_{i1j1}[level_{base}][comp] \\
684e5c31af7Sopenharmony_ci\tau[B] &= \tau_{i1j0}[level_{base}][comp] \\
685e5c31af7Sopenharmony_ci\tau[A] &= \tau_{i0j0}[level_{base}][comp]
686e5c31af7Sopenharmony_ci\end{aligned}
687e5c31af7Sopenharmony_ci++++++++++++++++++++++++
688e5c31af7Sopenharmony_ci
689e5c31af7Sopenharmony_ci=== latexmath block 49
690e5c31af7Sopenharmony_ci
691e5c31af7Sopenharmony_ci[latexmath]
692e5c31af7Sopenharmony_ci++++++++++++++++++++++++
693e5c31af7Sopenharmony_ci\begin{aligned}
694e5c31af7Sopenharmony_ci\tau[level_{base}][comp] &=
695e5c31af7Sopenharmony_ci  \begin{cases}
696e5c31af7Sopenharmony_ci    \tau[level_{base}][R], & \text{for}\  comp = 0 \\
697e5c31af7Sopenharmony_ci    \tau[level_{base}][G], & \text{for}\  comp = 1 \\
698e5c31af7Sopenharmony_ci    \tau[level_{base}][B], & \text{for}\  comp = 2 \\
699e5c31af7Sopenharmony_ci    \tau[level_{base}][A], & \text{for}\  comp = 3
700e5c31af7Sopenharmony_ci  \end{cases}\\
701e5c31af7Sopenharmony_cicomp & \,\text{from SPIR-V operand Component}
702e5c31af7Sopenharmony_ci\end{aligned}
703e5c31af7Sopenharmony_ci++++++++++++++++++++++++
704e5c31af7Sopenharmony_ci
705e5c31af7Sopenharmony_ci=== latexmath block 50
706e5c31af7Sopenharmony_ci
707e5c31af7Sopenharmony_ci[latexmath]
708e5c31af7Sopenharmony_ci++++++++++++++++++++++++
709e5c31af7Sopenharmony_ci\begin{aligned}
710e5c31af7Sopenharmony_ci\tau[level] &=
711e5c31af7Sopenharmony_ci  \begin{cases}
712e5c31af7Sopenharmony_ci     \tau_{ijk}[level], & \text{for 3D image} \\
713e5c31af7Sopenharmony_ci     \tau_{ij}[level],  & \text{for 2D or Cube image} \\
714e5c31af7Sopenharmony_ci     \tau_{i}[level],   & \text{for 1D image}
715e5c31af7Sopenharmony_ci   \end{cases}
716e5c31af7Sopenharmony_ci\end{aligned}
717e5c31af7Sopenharmony_ci++++++++++++++++++++++++
718e5c31af7Sopenharmony_ci
719e5c31af7Sopenharmony_ci=== latexmath block 51
720e5c31af7Sopenharmony_ci
721e5c31af7Sopenharmony_ci[latexmath]
722e5c31af7Sopenharmony_ci++++++++++++++++++++++++
723e5c31af7Sopenharmony_ci\begin{aligned}
724e5c31af7Sopenharmony_ci\tau_{3D}[level] & = (1-\alpha)(1-\beta)(1-\gamma)\tau_{i0j0k0}[level] \\
725e5c31af7Sopenharmony_ci          & \, + (\alpha)(1-\beta)(1-\gamma)\tau_{i1j0k0}[level] \\
726e5c31af7Sopenharmony_ci          & \, + (1-\alpha)(\beta)(1-\gamma)\tau_{i0j1k0}[level] \\
727e5c31af7Sopenharmony_ci          & \, + (\alpha)(\beta)(1-\gamma)\tau_{i1j1k0}[level]   \\
728e5c31af7Sopenharmony_ci          & \, + (1-\alpha)(1-\beta)(\gamma)\tau_{i0j0k1}[level] \\
729e5c31af7Sopenharmony_ci          & \, + (\alpha)(1-\beta)(\gamma)\tau_{i1j0k1}[level]   \\
730e5c31af7Sopenharmony_ci          & \, + (1-\alpha)(\beta)(\gamma)\tau_{i0j1k1}[level]   \\
731e5c31af7Sopenharmony_ci          & \, + (\alpha)(\beta)(\gamma)\tau_{i1j1k1}[level]
732e5c31af7Sopenharmony_ci\end{aligned}
733e5c31af7Sopenharmony_ci++++++++++++++++++++++++
734e5c31af7Sopenharmony_ci
735e5c31af7Sopenharmony_ci=== latexmath block 52
736e5c31af7Sopenharmony_ci
737e5c31af7Sopenharmony_ci[latexmath]
738e5c31af7Sopenharmony_ci++++++++++++++++++++++++
739e5c31af7Sopenharmony_ci\begin{aligned}
740e5c31af7Sopenharmony_ci\tau_{2D}[level] & = (1-\alpha)(1-\beta)\tau_{i0j0}[level] \\
741e5c31af7Sopenharmony_ci          & \, + (\alpha)(1-\beta)\tau_{i1j0}[level] \\
742e5c31af7Sopenharmony_ci          & \, + (1-\alpha)(\beta)\tau_{i0j1}[level] \\
743e5c31af7Sopenharmony_ci          & \, + (\alpha)(\beta)\tau_{i1j1}[level]
744e5c31af7Sopenharmony_ci\end{aligned}
745e5c31af7Sopenharmony_ci++++++++++++++++++++++++
746e5c31af7Sopenharmony_ci
747e5c31af7Sopenharmony_ci=== latexmath block 53
748e5c31af7Sopenharmony_ci
749e5c31af7Sopenharmony_ci[latexmath]
750e5c31af7Sopenharmony_ci++++++++++++++++++++++++
751e5c31af7Sopenharmony_ci\begin{aligned}
752e5c31af7Sopenharmony_ci\tau_{1D}[level] & = (1-\alpha)\tau_{i0}[level] \\
753e5c31af7Sopenharmony_ci          & \, + (\alpha)\tau_{i1}[level]
754e5c31af7Sopenharmony_ci\end{aligned}
755e5c31af7Sopenharmony_ci++++++++++++++++++++++++
756e5c31af7Sopenharmony_ci
757e5c31af7Sopenharmony_ci=== latexmath block 54
758e5c31af7Sopenharmony_ci
759e5c31af7Sopenharmony_ci[latexmath]
760e5c31af7Sopenharmony_ci++++++++++++++++++++++++
761e5c31af7Sopenharmony_ci\begin{aligned}
762e5c31af7Sopenharmony_ci\tau[level] &=
763e5c31af7Sopenharmony_ci  \begin{cases}
764e5c31af7Sopenharmony_ci     \tau_{3D}[level], & \text{for 3D image} \\
765e5c31af7Sopenharmony_ci     \tau_{2D}[level], & \text{for 2D or Cube image} \\
766e5c31af7Sopenharmony_ci     \tau_{1D}[level], & \text{for 1D image}
767e5c31af7Sopenharmony_ci   \end{cases}
768e5c31af7Sopenharmony_ci\end{aligned}
769e5c31af7Sopenharmony_ci++++++++++++++++++++++++
770e5c31af7Sopenharmony_ci
771e5c31af7Sopenharmony_ci=== latexmath block 55
772e5c31af7Sopenharmony_ci
773e5c31af7Sopenharmony_ci[latexmath]
774e5c31af7Sopenharmony_ci++++++++++++++++++++++++
775e5c31af7Sopenharmony_ci\begin{aligned}
776e5c31af7Sopenharmony_ci\tau &=
777e5c31af7Sopenharmony_ci  \begin{cases}
778e5c31af7Sopenharmony_ci    \tau[d], & \text{for mip mode BASE or NEAREST} \\
779e5c31af7Sopenharmony_ci    (1-\delta)\tau[d_{hi}]+\delta\tau[d_{lo}], & \text{for mip mode LINEAR}
780e5c31af7Sopenharmony_ci  \end{cases}
781e5c31af7Sopenharmony_ci\end{aligned}
782e5c31af7Sopenharmony_ci++++++++++++++++++++++++
783e5c31af7Sopenharmony_ci
784e5c31af7Sopenharmony_ci=== latexmath block 56
785e5c31af7Sopenharmony_ci
786e5c31af7Sopenharmony_ci[latexmath]
787e5c31af7Sopenharmony_ci++++++++++++++++++++++++
788e5c31af7Sopenharmony_ci\begin{aligned}
789e5c31af7Sopenharmony_ci\tau_{2Daniso} & =
790e5c31af7Sopenharmony_ci     \frac{1}{N}\sum_{i=1}^{N}
791e5c31af7Sopenharmony_ci     {\tau_{2D}\left (
792e5c31af7Sopenharmony_ci       u \left ( x - \frac{1}{2} + \frac{i}{N+1} , y \right ),
793e5c31af7Sopenharmony_ci         \left ( v \left (x-\frac{1}{2}+\frac{i}{N+1} \right ), y
794e5c31af7Sopenharmony_ci\right )
795e5c31af7Sopenharmony_ci     \right )},
796e5c31af7Sopenharmony_ci     & \text{when}\  \rho_{x} > \rho_{y} \\
797e5c31af7Sopenharmony_ci\tau_{2Daniso} &=
798e5c31af7Sopenharmony_ci     \frac{1}{N}\sum_{i=1}^{N}
799e5c31af7Sopenharmony_ci     {\tau_{2D}\left (
800e5c31af7Sopenharmony_ci        u \left  ( x, y - \frac{1}{2} + \frac{i}{N+1} \right ),
801e5c31af7Sopenharmony_ci          \left ( v \left (x,y-\frac{1}{2}+\frac{i}{N+1} \right )
802e5c31af7Sopenharmony_ci\right )
803e5c31af7Sopenharmony_ci     \right )},
804e5c31af7Sopenharmony_ci     & \text{when}\  \rho_{y} \geq \rho_{x}
805e5c31af7Sopenharmony_ci\end{aligned}
806e5c31af7Sopenharmony_ci++++++++++++++++++++++++
807e5c31af7Sopenharmony_ci
808e5c31af7Sopenharmony_ci== File chapters/vertexpostproc.txt
809e5c31af7Sopenharmony_ci
810e5c31af7Sopenharmony_ci=== latexmath block 57
811e5c31af7Sopenharmony_ci
812e5c31af7Sopenharmony_ci[latexmath]
813e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
814e5c31af7Sopenharmony_ci\begin{array}{c}
815e5c31af7Sopenharmony_ci-w_c \leq x_c \leq w_c \\
816e5c31af7Sopenharmony_ci-w_c \leq y_c \leq w_c \\
817e5c31af7Sopenharmony_ci0 \leq z_c \leq w_c
818e5c31af7Sopenharmony_ci\end{array}
819e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
820e5c31af7Sopenharmony_ci
821e5c31af7Sopenharmony_ci=== latexmath block 58
822e5c31af7Sopenharmony_ci
823e5c31af7Sopenharmony_ci[latexmath]
824e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
825e5c31af7Sopenharmony_ci\left(\begin{array}{c}
826e5c31af7Sopenharmony_cix_c \\
827e5c31af7Sopenharmony_ciy_c \\
828e5c31af7Sopenharmony_ciz_c \\
829e5c31af7Sopenharmony_ciw_c
830e5c31af7Sopenharmony_ci\end{array}\right)
831e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
832e5c31af7Sopenharmony_ci
833e5c31af7Sopenharmony_ci=== latexmath block 59
834e5c31af7Sopenharmony_ci
835e5c31af7Sopenharmony_ci[latexmath]
836e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
837e5c31af7Sopenharmony_ci\left(
838e5c31af7Sopenharmony_ci        \begin{array}{c}
839e5c31af7Sopenharmony_ci                x_d \\
840e5c31af7Sopenharmony_ci                y_d \\
841e5c31af7Sopenharmony_ci                z_d
842e5c31af7Sopenharmony_ci        \end{array}
843e5c31af7Sopenharmony_ci\right) =
844e5c31af7Sopenharmony_ci\left(
845e5c31af7Sopenharmony_ci        \begin{array}{c}
846e5c31af7Sopenharmony_ci                \frac{x_c}{w_c} \\
847e5c31af7Sopenharmony_ci                \frac{y_c}{w_c} \\
848e5c31af7Sopenharmony_ci                \frac{z_c}{w_c}
849e5c31af7Sopenharmony_ci        \end{array}
850e5c31af7Sopenharmony_ci\right)
851e5c31af7Sopenharmony_ci++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
852e5c31af7Sopenharmony_ci
853e5c31af7Sopenharmony_ci=== latexmath inline 12
854e5c31af7Sopenharmony_ci
855e5c31af7Sopenharmony_cilatexmath:[\frac{k}{2^m - 1}]
856e5c31af7Sopenharmony_ci
857e5c31af7Sopenharmony_ci== File chapters/VK_IMG_filter_cubic/filter_cubic_texel_filtering.txt
858e5c31af7Sopenharmony_ci
859e5c31af7Sopenharmony_ci=== latexmath block 60
860e5c31af7Sopenharmony_ci
861e5c31af7Sopenharmony_ci[latexmath]
862e5c31af7Sopenharmony_ci++++++++++++++++++++++++
863e5c31af7Sopenharmony_ci\begin{aligned}
864e5c31af7Sopenharmony_cicinterp(\tau_0, \tau_1, \tau_2, \tau_3, \omega) =
865e5c31af7Sopenharmony_ci\frac{1}{2}
866e5c31af7Sopenharmony_ci\begin{bmatrix}1 & \omega & \omega^2 & \omega^3 \end{bmatrix}
867e5c31af7Sopenharmony_ci\times
868e5c31af7Sopenharmony_ci\begin{bmatrix}
869e5c31af7Sopenharmony_ci 0 &  2 &  0 &  0 \\
870e5c31af7Sopenharmony_ci-1 &  0 &  1 &  0 \\
871e5c31af7Sopenharmony_ci 2 & -5 &  4 &  1 \\
872e5c31af7Sopenharmony_ci-1 &  3 & -3 &  1
873e5c31af7Sopenharmony_ci\end{bmatrix}
874e5c31af7Sopenharmony_ci\times
875e5c31af7Sopenharmony_ci\begin{bmatrix}
876e5c31af7Sopenharmony_ci\tau_0 \\
877e5c31af7Sopenharmony_ci\tau_1 \\
878e5c31af7Sopenharmony_ci\tau_2 \\
879e5c31af7Sopenharmony_ci\tau_3
880e5c31af7Sopenharmony_ci\end{bmatrix}
881e5c31af7Sopenharmony_ci\end{aligned}
882e5c31af7Sopenharmony_ci++++++++++++++++++++++++
883e5c31af7Sopenharmony_ci
884e5c31af7Sopenharmony_ci=== latexmath block 61
885e5c31af7Sopenharmony_ci
886e5c31af7Sopenharmony_ci[latexmath]
887e5c31af7Sopenharmony_ci++++++++++++++++++++++++
888e5c31af7Sopenharmony_ci\begin{aligned}
889e5c31af7Sopenharmony_ci\tau[level] &=
890e5c31af7Sopenharmony_ci  \begin{cases}
891e5c31af7Sopenharmony_ci     \tau_{2D}[level], & \text{for 2D image} \\
892e5c31af7Sopenharmony_ci     \tau_{1D}[level], & \text{for 1D image}
893e5c31af7Sopenharmony_ci   \end{cases}
894e5c31af7Sopenharmony_ci\end{aligned}
895e5c31af7Sopenharmony_ci++++++++++++++++++++++++
896e5c31af7Sopenharmony_ci
897e5c31af7Sopenharmony_ci== File chapters/VK_IMG_filter_cubic/filter_cubic_texel_selection.txt
898e5c31af7Sopenharmony_ci
899e5c31af7Sopenharmony_ci=== latexmath block 62
900e5c31af7Sopenharmony_ci
901e5c31af7Sopenharmony_ci[latexmath]
902e5c31af7Sopenharmony_ci++++++++++++++++++++++++
903e5c31af7Sopenharmony_ci\begin{aligned}
904e5c31af7Sopenharmony_cii_{0}  & = \left \lfloor u - \frac{3}{2} \right \rfloor & i_{1} & = i_{0} + 1 & i_{2} & = i_{1} + 1 & i_{3} & = i_{2} + 1 \\[1em]
905e5c31af7Sopenharmony_cij_{0}  & = \left \lfloor u - \frac{3}{2} \right \rfloor & j_{1} & = j_{0} + 1 & j_{2} & = j_{1} + 1 & j_{3} & = j_{2} + 1 \\
906e5c31af7Sopenharmony_ci\\
907e5c31af7Sopenharmony_ci\alpha & = \mathbin{frac} \left ( u - \frac{1}{2} \right ) \\[1em]
908e5c31af7Sopenharmony_ci\beta  & = \mathbin{frac} \left ( v - \frac{1}{2} \right )
909e5c31af7Sopenharmony_ci\end{aligned}
910e5c31af7Sopenharmony_ci++++++++++++++++++++++++
911e5c31af7Sopenharmony_ci
912e5c31af7Sopenharmony_ci== File style/writing.txt
913e5c31af7Sopenharmony_ci
914e5c31af7Sopenharmony_ci=== latexmath inline 13
915e5c31af7Sopenharmony_ci
916e5c31af7Sopenharmony_cilatexmath:[[0,1\]]
917e5c31af7Sopenharmony_ci
918e5c31af7Sopenharmony_ci=== latexmath inline 14
919e5c31af7Sopenharmony_ci
920e5c31af7Sopenharmony_cilatexmath:[\frac{1 - \frac{x}{2}}{x - 1}]
921e5c31af7Sopenharmony_ci
922e5c31af7Sopenharmony_ci=== latexmath inline 15
923e5c31af7Sopenharmony_ci
924e5c31af7Sopenharmony_cilatexmath:[\mathbf{c} = t \mathbf{c}_1 + (1-t) \mathbf{c}_2.]
925e5c31af7Sopenharmony_ci
926e5c31af7Sopenharmony_ci=== latexmath block 63
927e5c31af7Sopenharmony_ci
928e5c31af7Sopenharmony_ci[latexmath]
929e5c31af7Sopenharmony_ci+++++++++++++++++++
930e5c31af7Sopenharmony_ci\begin{aligned}
931e5c31af7Sopenharmony_cic_{RGB} & =
932e5c31af7Sopenharmony_ci  \begin{cases}
933e5c31af7Sopenharmony_ci    \frac{c_{sRGB}}{12.92}                              & \text{for}\  c_{sRGB} \leq 0.04045 \\
934e5c31af7Sopenharmony_ci    \left ( \frac{c_{sRGB}+0.055}{1.055} \right )^{2.4} & \text{for}\  c_{sRGB} > 0.04045
935e5c31af7Sopenharmony_ci  \end{cases}
936e5c31af7Sopenharmony_ci\end{aligned}
937e5c31af7Sopenharmony_ci+++++++++++++++++++
938e5c31af7Sopenharmony_ci
939e5c31af7Sopenharmony_ci=== latexmath block 64
940e5c31af7Sopenharmony_ci
941e5c31af7Sopenharmony_ci[latexmath]
942e5c31af7Sopenharmony_ci+++++++++++++++++++
943e5c31af7Sopenharmony_ciV =
944e5c31af7Sopenharmony_ci  \begin{cases}
945e5c31af7Sopenharmony_ci    (-1)^S \times 0.0,                      & E = 0, M = 0     \\
946e5c31af7Sopenharmony_ci    (-1)^S \times 2^{-14} \times { M \over 2^{10} },
947e5c31af7Sopenharmony_ci                                            & E = 0,  M \neq 0 \\
948e5c31af7Sopenharmony_ci    (-1)^S \times 2^{E-15} \times { \left( 1 + { M \over 2^{10} } \right) },
949e5c31af7Sopenharmony_ci                                            & 0 < E < 31       \\
950e5c31af7Sopenharmony_ci    (-1)^S \times Inf,             & E = 31, M = 0             \\
951e5c31af7Sopenharmony_ci    NaN,                           & E = 31, M \neq 0
952e5c31af7Sopenharmony_ci  \end{cases}
953e5c31af7Sopenharmony_ci+++++++++++++++++++
954