blob: af85b18a8953a6c5ac5eebb6cfc36eb84e22b09c [file]
/*
* Copyright 2026 Rive
*/
#ifdef @VERTEX
ATTR_BLOCK_BEGIN(Attrs)
ATTR(0, packed_float3, @a_triangleVertex);
ATTR_BLOCK_END
VERTEX_MAIN(@drawVertexMain, Attrs, attrs, _vertexID, _instanceID)
{
ATTR_UNPACK(_vertexID, attrs, @a_triangleVertex, packed_float3);
float4 pos = RENDER_TARGET_COORD_TO_CLIP_COORD(@a_triangleVertex.xy);
EMIT_VERTEX(pos);
}
#endif
#ifdef @FRAGMENT
PLS_BLOCK_BEGIN
#ifndef @FIXED_FUNCTION_COLOR_OUTPUT
PLS_DECL4F(COLOR_PLANE_IDX, colorBuffer);
#endif
PLS_DECL4F(CLIP_PLANE_IDX, clipBuffer);
PLS_BLOCK_END
CLOCKWISE_ATOMIC_PLS_MAIN(@drawFragmentMain)
{
// srcOver blend is enabled: emit an alpha value of 1 to overwrite the
// existing clip.
PLS_STORE4F(clipBuffer, make_half4(.0, .0, .0, 1.));
// srcOver blend is enabled: emit a color of 0 to make sure the framebuffer
// remains unchanged.
EMIT_CLOCKWISE_ATOMIC_PLS(make_half4(.0));
}
#endif // FRAGMENT