1

私はいくつかの影を作ろうとしていますが、シェーダーは以下を使用した場合にのみ値を出力します:

layout (location = 0) out vec4 outColor;

vec3 以下では動作しません。ここでテクスチャ プロパティを確認できます。

    shadowTextureProperties.setHasMipMap(false);
    shadowTextureProperties.setMagFilter(EnumTextureFilter.NEAREST);
    shadowTextureProperties.setMinFilter(EnumTextureFilter.NEAREST);
    shadowTextureProperties.setWrapS(EnumTextureWrap.CLAMP_TO_EDGE);
    shadowTextureProperties.setWrapT(EnumTextureWrap.CLAMP_TO_EDGE);
    shadowTextureProperties.setInternalColorFormat(EnumTextureColorFormat.RGB_32F); // 1st format value
    shadowTextureProperties.setSrcColorFormat(EnumTextureColorFormat.RGB); // 2nd format value
    shadowTextureProperties.setValueFormat(EnumValueFormat.FLOAT);

これは、vec3 出力と上記の形式のシェーダー フラグメント ソースです。完全に白い画面が表示されます。vec4 を使用すると、真の深度値を取得できます。

#version 400
precision highp float;
layout (location = 0) out vec3 outColor;

void main()
{
    outColor = vec3(gl_FragCoord.z);
}

結果

vec3 の場合: ここに画像の説明を入力

vec4 の場合: ここに画像の説明を入力

4

0 に答える 0