メタルシェイダーを書いています。メタルフラグメントシェーダ、アクセス現在のフレームバッファカラー
私が欲しいのは、フラグメントの現在の色にアクセスすることです。
たとえば、私は例
のために結果画面がFPSで黒から白に行くことになる、 リターンcurrentColor + 0.1を入れて、私のフラグメントシェーダの終わりに
、。 これは、画面に表示される三角形の線を描画する基本的なプログラムです。 究極の目標は、シェイダーの内部にパストレーサーを書き込むことです。私はこれをopengl + glslで行っています。 バッファーに問題があります。私は簡単な解決策は、現在の出力色をシェーダーに戻し、そこで平均化することだと思いました。
これら
はシェーダです:#include <metal_stdlib>
using namespace metal;
#import "AAPLShaderTypes.h"
vertex float4 vertexShader(uint vertexID [[vertex_id]], constant AAPLVertex *vertices [[buffer(AAPLVertexInputIndexVertices)]], constant vector_uint2 *viewportSizePointer [[buffer(AAPLVertexInputIndexViewportSize)]], constant vector_float4 * seeds) {
float4 clipSpacePosition = vector_float4(0.0, 0.0, 0.0, 1.0);
float2 pixelSpacePosition = vertices[vertexID].position.xy;
vector_float2 viewportSize = vector_float2(*viewportSizePointer);
clipSpacePosition.xy = pixelSpacePosition/(viewportSize/2.0);
return clipSpacePosition;
}
fragment float4 fragmentShader()
{
// I want to do this
// return currentColor + 0.1;
return float4(1.0, 1.0, 1.0, 1.0);
}