J'écris un shader en métal.Shader à fragmentation en métal, couleur courante du framebuffer d'accès
Tout ce que je veux, c'est accéder à la couleur actuelle du fragment.
Par exemple.
A la fin de mon shader fragment, quand je mets retour currentColor + 0,1, par exemple
Le résultat sera écran allant du noir au blanc au FPS. Il s'agit d'un programme de base qui dessine une bande triangulaire qui remplit l'écran. Le but ultime est d'écrire un traceur dans le shader, je l'ai fait avec opengl + glsl. J'ai des problèmes avec les tampons. Je pensais qu'une solution facile est de simplement renvoyer la couleur de sortie actuelle au shader et de la calculer en moyenne.
Ce sont les shaders:
#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);
}