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