wil*_*alo 16 javascript glsl webgl glsles
我正在寻找并行化一些复杂的数学,而webgl看起来是完美的方式.问题是,你只能从纹理中读取8位整数.理想情况下,我希望从纹理中获取32位数字.我有想法使用4个颜色通道获得每像素32位,而不是4位8位.
我的问题是,glsl没有"%"运算符或任何按位运算符!
TLDR:如何使用glsl中的运算符将32位数转换为4位数.
关于该技术的一些额外信息(使用按位运算符):
LJᛃ*_*LJᛃ 24
您可以通过乘以/除以2的幂来进行位移.
正如在评论中指出我最初发布是工作,但不正确的方法,这里有一个由Aras的Pranckevičius,注意在职位本身的源代码包含一个错字,是HLSL,这是纠正错字一个GLSL端口:
const vec4 bitEnc = vec4(1.,255.,65025.,16581375.);
const vec4 bitDec = 1./bitEnc;
vec4 EncodeFloatRGBA (float v) {
vec4 enc = bitEnc * v;
enc = fract(enc);
enc -= enc.yzww * vec2(1./255., 0.).xxxy;
return enc;
}
float DecodeFloatRGBA (vec4 v) {
return dot(v, bitDec);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8141 次 |
最近记录: |