2017-06-16 8 views
-1

私は、GLSL頂点シェーダの属性として16ビットの浮動小数点浮動小数点浮動小数点浮動小数点数を取得しようとしています。GLSLハーフ(浮動小数点)属性タイプ

error C7506: OpenGL does not define the global type half 

が、私の#version410あるので、それは半分をサポートする必要があります:それは私が言ってコンパイルさせないのだろうか?私は明白な何かを欠いていますか私はあなたが何かしようとしたと仮定しそう実証MCVEが存在しない場合には

+2

[mcve]で編集します。 – genpfault

+1

16ビットハーフフロートを問題なく頂点属性に使用できますが、シェーダで16ビットハーフフロートを使用することはできません。それらは他の非整数属性タイプと同様に32ビット浮動小数点に変換されます。 – derhass

答えて

3

:ただし、 "half" を

half float aHalfFloat; 

#version 410の予約キーワードです:

OpenGL Shading Language 4.10 Specification、15ページ(強調鉱山) :

今後の使用のために予約されているキーワードは次のとおりです。 がエラーになりますそれらを使用する:

共通パーティションのアクティブASMクラス組合列挙型をテンプレートのtypedefこの 詰め後藤インラインNOINLINE揮発性パブリック静的にextern外部 インターフェース長い短い半分固定符号なしsuperp入力出力hvec2 hvec3 hvec4 fvec2 fvec3 fvec4 sampler3DRectフィルタimage1D image2D image3D imageCube iimage1D iimage2D iimage3D iimageCube uimage1D uimage2D uimage3D uimageCube image1DArray image2DArray iimage1DArray iimage2DArray uimage1DArray uimage2DArray image1DShadow image2DShadowまたrow_major使用image1DArrayShadow image2DArrayShadow imageBuffer iimageBuffer uimageBufferのsizeofキャスト名前空間、全て 識別子

+0

だから私はlowp floatを使うべきですか? – ChaoSXDemon

+0

@ChaoSXDemon:何もしません。「4.5.2 Precision Qualifiers」、55ページの下部を参照してください。 – genpfault

+0

したがって、410の属性として16ビット浮動小数点を使用することはできませんか? – ChaoSXDemon

2

のOpenGLおよびOpenGL ESは、精度の2つの同時のタイプを定義します。シェーダで使用されるバッファ

  • 最小演算精度で

    • ストレージ精度。

    保存精度は、GL_FLOATGL_HALF_FLOATなど、頂点属性のアップロードによって定義されます。これは、メモリにデータを格納するために使用される精度になります。

    使用精度は、highp(少なくとも32ビット)、mediump(少なくとも16ビット)、およびlowp(少なくとも9ビット)とシェーダで定義されています。これらは、最小値の精度です。シェーダが変数をmediumpと指定し、シェーダコンパイラがfp32データ型を生成することは完全に正当です。デスクトップGPUはfp32計算のみをサポートする傾向があるため、highp,mediumpおよびlowpはすべてfp32データ型にマップされます(精度修飾子はOpenGL ESシェーダとの互換性を保つためにのみ含まれ、コンパイラによっては無視されます)。 OpenGL ESを実装するモバイルGPUは、highpをfp32に、mediumplowpをfp16にマッピングする傾向があります。 詳細な情報は、入力されたシェーダ変数にメモリ内の頂点属性をバインドする場合、ストレージおよび使用精度に一致させる必要はないあるGLSL ES 3.0 Specification, Section 4.5.1

    に見出すことができます。 APIには透過的な属性の精度変換が含まれます。ユーザーがアップロードすることは完全に合法です。 a GL_FLOATし、mediump fp16変数としてシェーダで使用しますが、これはメモリ帯域幅の浪費となります。

  • 関連する問題