【日本語訳】"Low-level Thinking in High-level Shading Languages"
1. Low-level Thinking in High-level
Shading Languages
High-level Shading Languages(HLSL) におけるローレベル思考
Emil Persson
Head of Research, Avalanche Studios
翻訳: @Reputeless
18. MAD
● その他の式変形
x * (1.0f – x) → x–x*x
x * (y + 1.0f) → x*y+x
(x + c) * (x - c) → x * x + (-c * c)
(x + a) / b → x * (1.0f / b) + (a / b)
x += a * b + c * d; → x += a * b;
x += c * d;
19. 除算
● a / b は一般的に a * rcp(b) と実装される
● ただし D3D アセンブリは DIV 命令を使うことがある
● 明示的な rcp() はときどき良いコードを生成する
● 式変形
a / (x + b) → rcp(x * (1.0f / a) + (b / a))
a / (x * b) → rcp(x) * (a / b)
rcp(x * (b / a))
a / (x * b + c) → rcp(x * (b / a) + (c / a))
(x + a) / x → 1.0f + a * rcp(x)
(x * a + b) / x → a + b * rcp(x)
● どれも中学生の数学レベル!
● すべて究極形まで式を導出をしている! [3]