簡體   English   中英

glsl 中的高效組件選擇器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM