14 using PipelineBuilderCallback =
20 Scalar kAntialiasPixels = 1.0;
24 std::unique_ptr<CircleGeometry> geometry,
27 geometry->SetAntialiasPadding(kAntialiasPixels);
28 return std::unique_ptr<CircleContents>(
32 CircleContents::CircleContents(std::unique_ptr<CircleGeometry> geometry,
35 : geometry_(
std::move(geometry)), color_(color), stroked_(stroked) {}
42 VS::FrameInfo frame_info;
43 FS::FragInfo frag_info;
45 frag_info.center = geometry_->GetCenter();
46 frag_info.radius = geometry_->GetRadius();
47 frag_info.stroke_width = geometry_->GetStrokeWidth();
48 frag_info.aa_pixels = kAntialiasPixels;
49 frag_info.stroked = stroked_ ? 1.0f : 0.0f;
51 auto geometry_result = geometry_->GetPositionBuffer(renderer, entity, pass);
58 return ColorSourceContents::DrawGeometry<VS>(
59 this, geometry_.get(), renderer, entity, pass, pipeline_callback,
62 [&frag_info, &data_host_buffer](
RenderPass& pass) {
63 FS::BindFragInfo(pass, data_host_buffer.EmplaceUniform(frag_info));
64 pass.SetCommandLabel(
"Circle");
69 [geometry_result = std::move(geometry_result)](
72 const Geometry* geometry) { return geometry_result; });
std::optional< Rect > GetCoverage(const Entity &entity) const override
Get the area of the render pass that will be affected when this contents is rendered.
static std::unique_ptr< CircleContents > Make(std::unique_ptr< CircleGeometry > geometry, Color color, bool stroked)
bool Render(const ContentContext &renderer, const Entity &entity, RenderPass &pass) const override
Scalar GetOpacityFactor() const
Get the opacity factor for this color source.
std::function< PipelineRef(ContentContextOptions)> PipelineBuilderCallback
PipelineRef GetCirclePipeline(ContentContextOptions opts) const
HostBuffer & GetTransientsDataBuffer() const
Retrieve the current host buffer for transient storage of other non-index data.
const Matrix & GetTransform() const
Get the global transform matrix for this Entity.
Render passes encode render commands directed as one specific render target into an underlying comman...
VertexShader_ VertexShader
FragmentShader_ FragmentShader
raw_ptr< Pipeline< PipelineDescriptor > > PipelineRef
A raw ptr to a pipeline object.
LinePipeline::FragmentShader FS
LinePipeline::VertexShader VS
constexpr Color WithAlpha(Scalar new_alpha) const