Ich schreibe einen Metall-Shader.Metallfragment Shader, Zugriff aktuellen Framebuffer Farbe
Alles, was ich will, ist der Zugriff auf die aktuelle Farbe des Fragments.
Zum Beispiel.
Am Ende meiner Fragment-Shader, wenn ich lege return current + 0,1, zum Beispiel
Das Ergebnisbild von Schwarz auf FPS auf weiß gehen wird. Dies ist ein Basisprogramm, das einen dreieckigen Streifen zeichnet, der den Bildschirm ausfüllt. Ultimatives Ziel ist das Schreiben eines Pfad-Tracers innerhalb des Shaders, ich habe dies mit opengl + glsl gemacht. Ich habe Probleme mit den Puffern. Ich dachte, eine einfache Lösung wäre, einfach die aktuelle Ausgabefarbe zurück zum Shader zu leiten und sie dort zu mitteln.
Dies sind die Shadern:
#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);
}