Flutter Engine
The Flutter Engine
|
#include <GrConvexPolyEffect.h>
Public Member Functions | |
~GrConvexPolyEffect () override | |
const char * | name () const override |
std::unique_ptr< GrFragmentProcessor > | clone () const override |
Public Member Functions inherited from GrFragmentProcessor | |
const GrFragmentProcessor * | parent () const |
std::unique_ptr< ProgramImpl > | makeProgramImpl () const |
void | addToKey (const GrShaderCaps &caps, skgpu::KeyBuilder *b) const |
int | numChildProcessors () const |
int | numNonNullChildProcessors () const |
GrFragmentProcessor * | childProcessor (int index) |
const GrFragmentProcessor * | childProcessor (int index) const |
SkDEBUGCODE (bool isInstantiated() const ;) bool willReadDstColor() const | |
bool | isBlendFunction () const |
bool | usesSampleCoordsDirectly () const |
bool | usesSampleCoords () const |
const SkSL::SampleUsage & | sampleUsage () const |
bool | compatibleWithCoverageAsAlpha () const |
bool | preservesOpaqueInput () const |
bool | hasConstantOutputForConstantInput (SkPMColor4f inputColor, SkPMColor4f *outputColor) const |
bool | hasConstantOutputForConstantInput () const |
void | clearConstantOutputForConstantInputFlag () |
bool | isEqual (const GrFragmentProcessor &that) const |
void | visitProxies (const GrVisitProxyFunc &) const |
void | visitTextureEffects (const std::function< void(const GrTextureEffect &)> &) const |
void | visitWithImpls (const std::function< void(const GrFragmentProcessor &, ProgramImpl &)> &, ProgramImpl &) const |
GrTextureEffect * | asTextureEffect () |
const GrTextureEffect * | asTextureEffect () const |
Public Member Functions inherited from GrProcessor | |
virtual | ~GrProcessor ()=default |
void * | operator new (size_t size) |
void * | operator new (size_t object_size, size_t footer_size) |
void | operator delete (void *target) |
void * | operator new (size_t size, void *placement) |
void | operator delete (void *target, void *placement) |
template<typename T > | |
const T & | cast () const |
ClassID | classID () const |
Static Public Member Functions | |
static GrFPResult | Make (std::unique_ptr< GrFragmentProcessor > inputFP, GrClipEdgeType edgeType, int n, const float edges[]) |
static GrFPResult | Make (std::unique_ptr< GrFragmentProcessor >, GrClipEdgeType, const SkPath &) |
Static Public Member Functions inherited from GrFragmentProcessor | |
static std::unique_ptr< GrFragmentProcessor > | MakeColor (SkPMColor4f color) |
static std::unique_ptr< GrFragmentProcessor > | MulInputByChildAlpha (std::unique_ptr< GrFragmentProcessor > child) |
static std::unique_ptr< GrFragmentProcessor > | ApplyPaintAlpha (std::unique_ptr< GrFragmentProcessor > child) |
static std::unique_ptr< GrFragmentProcessor > | ModulateRGBA (std::unique_ptr< GrFragmentProcessor > child, const SkPMColor4f &color) |
static std::unique_ptr< GrFragmentProcessor > | OverrideInput (std::unique_ptr< GrFragmentProcessor >, const SkPMColor4f &) |
static std::unique_ptr< GrFragmentProcessor > | DisableCoverageAsAlpha (std::unique_ptr< GrFragmentProcessor >) |
static std::unique_ptr< GrFragmentProcessor > | DestColor () |
static std::unique_ptr< GrFragmentProcessor > | SwizzleOutput (std::unique_ptr< GrFragmentProcessor >, const skgpu::Swizzle &) |
static std::unique_ptr< GrFragmentProcessor > | ClampOutput (std::unique_ptr< GrFragmentProcessor >) |
static std::unique_ptr< GrFragmentProcessor > | Compose (std::unique_ptr< GrFragmentProcessor > f, std::unique_ptr< GrFragmentProcessor > g) |
static std::unique_ptr< GrFragmentProcessor > | ColorMatrix (std::unique_ptr< GrFragmentProcessor > child, const float matrix[20], bool unpremulInput, bool clampRGBOutput, bool premulOutput) |
static std::unique_ptr< GrFragmentProcessor > | SurfaceColor () |
static std::unique_ptr< GrFragmentProcessor > | DeviceSpace (std::unique_ptr< GrFragmentProcessor >) |
static std::unique_ptr< GrFragmentProcessor > | Rect (std::unique_ptr< GrFragmentProcessor >, GrClipEdgeType, SkRect) |
static GrFPResult | Circle (std::unique_ptr< GrFragmentProcessor >, GrClipEdgeType, SkPoint center, float radius) |
static GrFPResult | Ellipse (std::unique_ptr< GrFragmentProcessor >, GrClipEdgeType, SkPoint center, SkPoint radii, const GrShaderCaps &) |
static std::unique_ptr< GrFragmentProcessor > | HighPrecision (std::unique_ptr< GrFragmentProcessor >) |
Static Public Attributes | |
static constexpr int | kMaxEdges = 8 |
Private Member Functions | |
std::unique_ptr< ProgramImpl > | onMakeProgramImpl () const override |
void | onAddToKey (const GrShaderCaps &, skgpu::KeyBuilder *) const override |
bool | onIsEqual (const GrFragmentProcessor &other) const override |
An effect that renders a convex polygon. It is intended to be used as a coverage effect. Bounding geometry is rendered and the effect computes coverage based on the fragment's position relative to the polygon.
Definition at line 30 of file GrConvexPolyEffect.h.
|
override |
Definition at line 104 of file GrConvexPolyEffect.cpp.
|
overridevirtual |
Makes a copy of this fragment processor that draws equivalently to the original. If the processor has child processors they are cloned as well.
Implements GrFragmentProcessor.
Definition at line 193 of file GrConvexPolyEffect.cpp.
|
inlinestatic |
edges is a set of n edge equations where n is limited to kMaxEdges. It contains 3*n values. The edges should form a convex polygon. The positive half-plane is considered to be the inside. The equations should be normalized such that the first two coefficients are a unit 2d vector.
Currently the edges are specified in device space. In the future we may prefer to specify them in src space. There are a number of ways this could be accomplished but we'd probably have to modify the effect/shaderbuilder interface to make it possible (e.g. give access to the view matrix or untransformed positions in the fragment shader).
Definition at line 45 of file GrConvexPolyEffect.h.
|
static |
Creates an effect that clips against the path. If the path is not a convex polygon, is inverse filled, or has too many edges, creation will fail.
Definition at line 35 of file GrConvexPolyEffect.cpp.
|
inlineoverridevirtual |
Human-meaningful string to identify this processor; may be embedded in generated shader code and must be a legal SkSL identifier prefix.
Implements GrProcessor.
Definition at line 65 of file GrConvexPolyEffect.h.
|
overrideprivatevirtual |
Implements GrFragmentProcessor.
Definition at line 106 of file GrConvexPolyEffect.cpp.
|
overrideprivatevirtual |
Subclass implements this to support isEqual(). It will only be called if it is known that the two processors are of the same subclass (i.e. have the same ClassID).
Implements GrFragmentProcessor.
Definition at line 197 of file GrConvexPolyEffect.cpp.
|
overrideprivatevirtual |
Returns a new instance of the appropriate ProgramImpl subclass for the given GrFragmentProcessor. It will emit the appropriate code and live with the cached program to setup uniform data for each draw that uses the program.
Implements GrFragmentProcessor.
Definition at line 112 of file GrConvexPolyEffect.cpp.
|
inlinestaticconstexpr |
Definition at line 32 of file GrConvexPolyEffect.h.