0
シェーダを計算するために〜1MBの1Dイメージデータ(rgba8)を渡す必要があります。私は2Dテクスチャでそれを試してみました。SSBOからrgba8を読む
今私はSSBOでそれを達成する方法が面白いです。 glBufferData
でvoid *のデータを渡すことができます。 しかし、シェーダのSSBOからピクセルを読み取るには、vec4
?
シェーダを計算するために〜1MBの1Dイメージデータ(rgba8)を渡す必要があります。私は2Dテクスチャでそれを試してみました。SSBOからrgba8を読む
今私はSSBOでそれを達成する方法が面白いです。 glBufferData
でvoid *のデータを渡すことができます。 しかし、シェーダのSSBOからピクセルを読み取るには、vec4
?
できません。データを手動で解凍する必要があります。
データのピクセルをuint
(32ビットの符号なし整数)として読み取る必要があります。次に、そのデータから4つの8ビットコンポーネントをアンパックするためにビット操作を使用する必要があります。次にそれを4つの浮動小数点に正規化します。
幸いにも、GLSLにはunpackUnorm4x8
という機能があります。これはまさにこれを行います。それはuint
をとり、vec4
を吐き出します。