Package icyllis.arc3d.granite.geom
Class AnalyticArcStep
java.lang.Object
icyllis.arc3d.granite.GeometryStep
icyllis.arc3d.granite.geom.AnalyticArcStep
Analytic (SDF + HW derivatives) method to fill/stroke a butt/round/square stroked
arc curve, a circular sector, or a circular segment. The join type may be square or round,
for open arcs, and must be round for circular sector and circular segment.
The arc must be circular, not elliptical.
-
Nested Class Summary
Nested classes/interfaces inherited from class icyllis.arc3d.granite.GeometryStep
GeometryStep.ProgramImpl -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final VertexInputLayout.AttributeBitfield:
16-32 bits: painter's depth;
4-5 bits: join;
2-4 bits: dir;
join=0: round, join=1: miter;
dir=0: inside, dir=1: center, dir=2: outside;static final VertexInputLayout.AttributeSetstatic final VertexInputLayout.AttributeSetstatic final VertexInputLayout.Attribute(center X, center Y, start angle, sweep angle)static final VertexInputLayout.AttributeX is circle radius.
Y is stroke radius if stroked, or -1.0 if filled.
Z is local AA radius.static final VertexInputLayout.AttributeW is half width for open arcs.Fields inherited from class icyllis.arc3d.granite.GeometryStep
DEPTH, FLAG_EMIT_COVERAGE, FLAG_EMIT_PRIMITIVE_COLOR, FLAG_HANDLE_SOLID_COLOR, FLAG_HAS_TEXTURES, FLAG_OUTSET_BOUNDS_FOR_AA, FLAG_PERFORM_SHADING, MODEL_VIEW, SOLID_COLOR -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidappendToKey(@NonNull KeyBuilder b) Appends a key on the KeyBuilder that reflects any variety in the code that the geometry processor subclass can emit.voidemitFragmentColorCode(Formatter fs, String outputColor) Emits the fragment color code into the fragment shader.voidemitFragmentCoverageCode(Formatter fs, String outputCoverage) Emits the fragment coverage code into the fragment shader.voidemitVaryings(VaryingHandler varyingHandler, boolean usesFastSolidColor) voidemitVertexGeomCode(Formatter vs, @NonNull String worldPosVar, @Nullable String localPosVar, boolean usesFastSolidColor) Emits the geometry code into the vertex shader.@NonNull GeometryStep.ProgramImplmakeProgramImpl(ShaderCaps caps) Returns a new instance of the appropriate implementation class for the given GeometryProcessor.voidwriteMesh(MeshDrawWriter writer, Draw draw, float @Nullable [] solidColor, boolean mayRequireLocalCoords) Methods inherited from class icyllis.arc3d.granite.GeometryStep
appendAttributesToKey, depthStencilFlags, depthStencilSettings, emitFragmentDefinitions, emitSamplers, emitsCoverage, emitsPrimitiveColor, emitUniforms, emitVertexDefinitions, getInputLayout, handlesSolidColor, hasInstanceAttributes, hasVertexAttributes, instanceAttributes, instanceBinding, instanceStride, makeColorAttribute, name, numInstanceAttributes, numInstanceLocations, numTextureSamplers, numVertexAttributes, numVertexLocations, performsShading, primitiveType, textureSamplerState, textureSamplerSwizzle, uniqueID, vertexAttributes, vertexBinding, vertexStride, writeUniformsAndTextures
-
Field Details
-
LOCAL_ARC
(center X, center Y, start angle, sweep angle) -
RADII
X is circle radius.
Y is stroke radius if stroked, or -1.0 if filled.
Z is local AA radius. -
RADII_ARC
W is half width for open arcs. -
FLAGS_AND_DEPTH
Bitfield:
16-32 bits: painter's depth;
4-5 bits: join;
2-4 bits: dir;
join=0: round, join=1: miter;
dir=0: inside, dir=1: center, dir=2: outside; -
INSTANCE_ATTRIBS
-
INSTANCE_ATTRIBS_FOR_ARC
-
-
Constructor Details
-
AnalyticArcStep
public AnalyticArcStep(int type)
-
-
Method Details
-
appendToKey
Description copied from class:GeometryStepAppends a key on the KeyBuilder that reflects any variety in the code that the geometry processor subclass can emit.- Specified by:
appendToKeyin classGeometryStep- See Also:
-
makeProgramImpl
Description copied from class:GeometryStepReturns a new instance of the appropriate implementation class for the given GeometryProcessor. This method is called only when the specified key does not exist in the program cache.- Specified by:
makeProgramImplin classGeometryStep- See Also:
-
emitVaryings
- Overrides:
emitVaryingsin classGeometryStep
-
emitVertexGeomCode
public void emitVertexGeomCode(Formatter vs, @NonNull String worldPosVar, @Nullable String localPosVar, boolean usesFastSolidColor) Description copied from class:GeometryStepEmits the geometry code into the vertex shader. Implementation must define "vec4 worldPosVar" with the given name and setup it. If localPosVar is not null, then it must write geometry's local pos to it.- Overrides:
emitVertexGeomCodein classGeometryStep
-
emitFragmentColorCode
Description copied from class:GeometryStepEmits the fragment color code into the fragment shader. This is either paint's solid color or per-vertex primitive color. SeeGeometryStep.FLAG_HANDLE_SOLID_COLORandGeometryStep.FLAG_EMIT_PRIMITIVE_COLOR.- Overrides:
emitFragmentColorCodein classGeometryStep
-
emitFragmentCoverageCode
Description copied from class:GeometryStepEmits the fragment coverage code into the fragment shader.If
GeometryStep.emitsCoverage()is false, this method is called for hard-edge coverage, discard the fragment if coverage is 0. Otherwise outputCoverage is non-null, and coverage will involve in blending operations.- Overrides:
emitFragmentCoverageCodein classGeometryStep
-
writeMesh
public void writeMesh(MeshDrawWriter writer, Draw draw, float @Nullable [] solidColor, boolean mayRequireLocalCoords) - Overrides:
writeMeshin classGeometryStep
-