1

gl_FragDataを介してビュースペースの位置を書き出そうとしています。

残念ながら、この値はクランプされているようです[0-1](または少なくとも私が読み返したときです)

それをクランプしない方法はありますか?

4

3 に答える 3

2

GL_RGBA16F、GL_RGBA32F などの浮動小数点テクスチャを使用するだけで、クランプされません。

http://www.opengl.org/wiki/Floating_point_and_mipmapping_and_filtering

私は(空の浮動小数点テクスチャを作成するために)使用します:

glGenTextures(1, &texId);
glBindTexture(GL_TEXTURE_2D, texId);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);        
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);    
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);   
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, width, height, 0, GL_RGB, GL_FLOAT, NULL); 
于 2012-06-09T07:32:52.593 に答える
1

GL_ARB_color_buffer_float拡張機能を使用して浮動カラー バッファをセットアップできます。フラグメントは浮動小数点形式を使用して格納され、CLAMP_FRAGMENT_COLOR_ARBスイッチを有効/無効にすることで結果をクランプ/クランプ解除できます ( を使用ClampColorARB)。

これはテクスチャ ベースの手法ではありませんが、実際のカラー バッファを定義することに注意してください。残念ながら、このカラー バッファは通常のウィンドウ (オフスクリーン レンダリング) では表示できません。


GL_ARB_texture_float拡張機能を尊重してください。GL_ARB_color_buffer_float を使用すると、固定レンダリング パイプラインのクランプ動作を制御できます (頂点ステージとフラグメント ステージを分離します)。

ただし、カラー バッファーを定義しても、複数のカラー バッファーを持つことはできません。代わりに、浮動小数点テクスチャを使用すると、より複雑なフレーム バッファ オブジェクトをセットアップできます。

ただし、texture_float 拡張機能の次の説明に注意してください。

固定関数 GL の浮動小数点値はクランプされますか?

   RESOLVED:  This extension introduces texel values that can be
   outside [0, 1].  No clamping occurs to these values during
   texture filtering.  For the fixed-function pipeline, the
   filtered texel is now clamped before it is used for texture
   environment blending.  The ARB_color_buffer_float extension
   can be used to control this clamping.  For the programmable
   pipelines, no clamping occurs.
于 2012-06-09T08:04:11.793 に答える