[英]Efficient component selector in glsl
很久以前,我遇到了 glsl 的一個片段,它有效地計算了向量的絕對最大分量並將其他分量歸零。
例如,以下輸入將產生以下輸出:
vec3(1, 0, 0) -> vec3(1, 0, 0)
vec3(-1, 0.5, 0) -> vec3(-1, 0, 0)
vec3(2, 0.5, 0) -> vec3(2, 0, 0)
它主要依靠數學運算來通過盡可能多地利用內置於大多數 gpus 中的 lin alg 硬件來實現這一點,但我不記得片段的樣子。
您需要在 GLSL 中計算向量的絕對值和向量的分量最大值。 最后你可以使用greaterThanEqual
:
vec3 vabs = abs(v);
float m = max(vabs.x, max(vabs.y, vabs.z));
vec3 vmax = v * vec3(greaterThanEqual(vabs, vec3(m)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.