3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/math/Vec3.h"
7#include "mc/deps/core_graphics/enums/PrimitiveMode.h"
8#include "mc/deps/minecraft_renderer/renderer/MeshData.h"
14namespace mce {
class Color; }
16namespace mce {
class Mesh; }
31 enum class UploadMode :
int {
37 enum class SupplementaryFieldAutoGenerationMode :
int {
39 NormalsAndTangents = 1,
49 ::ll::TypedStorage<1, 1, bool> mIsFormatFixed;
50 ::ll::TypedStorage<8, 312, ::mce::MeshData> mMeshData;
51 ::ll::TypedStorage<1, 1, bool> mHasNormals;
52 ::ll::TypedStorage<8, 8, uint64> mNextReserve;
53 ::ll::TypedStorage<4, 20, ::std::optional<::glm::vec4>> mNextNormal;
54 ::ll::TypedStorage<4, 36, ::std::optional<::glm::vec2>[3]> mNextUV;
55 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mNextColor;
56 ::ll::TypedStorage<2, 4, ::std::optional<ushort>> mNextBoneId;
57 ::ll::TypedStorage<2, 4, ::std::optional<ushort>> mNextPBRTextureIdx;
58 ::ll::TypedStorage<4, 8, ::std::optional<uint>> mNextMERS;
59 ::ll::TypedStorage<1, 2, ::std::optional<uchar>> mNextGeoType;
60 ::ll::TypedStorage<1, 1, bool> mIndexPhase;
61 ::ll::TypedStorage<4, 12, ::Vec3> mPostTransformOffset;
62 ::ll::TypedStorage<4, 12, ::Vec3> mPostTransformScale;
63 ::ll::TypedStorage<1, 1, uchar> mQuadFacing;
64 ::ll::TypedStorage<1, 1, bool> mQuadTwoSided;
65 ::ll::TypedStorage<8, 24, ::std::vector<::TessellatorQuadInfo>> mQuadInfoList;
66 ::ll::TypedStorage<4, 12, ::Vec3> mFaceCenterAccumulator;
67 ::ll::TypedStorage<4, 4, int> mCurQuadVertex;
68 ::ll::TypedStorage<1, 1, bool> mApplyTransform;
69 ::ll::TypedStorage<4, 64, ::glm::mat4x4> mTransformMatrix;
70 ::ll::TypedStorage<1, 1, bool> mNoColor;
71 ::ll::TypedStorage<1, 1, bool> mVoidBeginEnd;
72 ::ll::TypedStorage<1, 1, bool> mForceTessellateIntercept;
76 ::std::function<void(::Tessellator
const&, ::mce::MaterialPtr
const&, ::mce::TexturePtr
const&)>>
77 mInterceptTessellator;
78 ::ll::TypedStorage<4, 4, uint> mCount;
79 ::ll::TypedStorage<4, 4, uint> mMaxVertexCount;
80 ::ll::TypedStorage<1, 1, bool> mTessellating;
81 ::ll::TypedStorage<1, 1, bool> mBuildFaceData;
82 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::mce::Mesh>> mPreGeneratedMesh;
83 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
93 MCAPI
explicit Tessellator(::std::weak_ptr<::mce::BufferResourceService> bufferResourceService);
95 MCAPI
void addPostTransformOffset(::Vec3
const& v);
97 MCAPI
void addPostTransformOffset(
float x,
float y,
float z);
99 MCAPI
void addRotation(
float angle, ::Vec3
const& axis);
101 MCAPI
void addTranslation(::Vec3
const& offset);
103 MCAPI
void applyDefaultTransform();
106 begin(::Tessellator::DebugContextCallback debugContextCallback,
int reservedVertices,
bool buildFaceData);
109 begin(::Tessellator::DebugContextCallback mode, ::mce::PrimitiveMode reservedVertices,
int buildFaceData,
bool);
111 MCAPI
void beginIndices(uint64 estimateCount);
113 MCAPI
void beginOverride(::Tessellator::DebugContextCallback debugContextCallback);
115 MCAPI
void bone0(ushort index);
121 MCAPI
void color(::mce::Color
const& c);
123 MCAPI
void color(
int c);
125 MCAPI
void color(
float r,
float g,
float b,
float a);
127 MCAPI
void colorABGR(
int c);
130 end(::std::string_view debugName,
131 ::Tessellator::SupplementaryFieldAutoGenerationMode supplementaryFieldGenerationMode);
134 end(::Tessellator::UploadMode uploadMode,
135 ::std::string_view debugName,
136 ::Tessellator::SupplementaryFieldAutoGenerationMode supplementaryFieldGenerationMode);
138 MCAPI ::mce::Mesh endOverride(
139 ::std::string_view debugName,
140 ::Tessellator::SupplementaryFieldAutoGenerationMode supplementaryFieldGenerationMode
143 MCAPI
bool forceTessellateIntercept()
const;
145 MCFOLD
bool getHasNormals();
147 MCAPI ::Vec3
const& getPostTransformOffset()
const;
149 MCAPI ::glm::mat4x4
const& getTransformMatrix()
const;
151 MCAPI ::mce::MeshDataVertexFieldCounts getVertexFieldCount()
const;
153 MCAPI
bool isOverridden();
155 MCAPI
bool isTessellating()
const;
157 MCAPI
void mers(
float metallic,
float emissive,
float roughness,
float subsurface);
159 MCAPI
void noColor();
161 MCAPI
void normal(::Vec3
const& n,
float w);
163 MCAPI
void normal(
float x,
float y,
float z,
float w);
165 MCAPI
void pbrTextureIdx(ushort
const& pbrTextureDataHandle);
167 MCAPI
void postTransformScale(::Vec3
const& scale);
169 MCAPI
void quad(uint i1, uint i2, uint i3, uint i4);
171 MCAPI
void reserveDeferredVertices(uint64 count);
173 MCAPI
void resetPostTransformScale();
175 MCAPI
void resetTessellateIntercept();
177 MCAPI
void resetTransform(
bool setToIdentity);
179 MCAPI
void rotateAroundPivot(::Vec3
const& pivotOffset,
float angle, ::Vec3
const& rotationAxis,
bool preTransform);
181 MCAPI
void setHasNormals(
bool hasNormal);
183 MCAPI
void setPostTransformOffset(::Vec3
const& v);
185 MCAPI
void setPostTransformOffset(
float xo,
float yo,
float zo);
187 MCAPI
void setQuadFacingID(uchar facing);
189 MCAPI
void setQuadTwoSided(
bool twoSided);
191 MCAPI
void setScaleTransform(::Vec3
const& scale);
193 MCAPI
void setTessellateIntercept(
194 ::std::function<
void(::Tessellator
const&, ::mce::MaterialPtr
const&, ::mce::TexturePtr
const&)> callback
197 MCAPI
bool shouldApplyTransform()
const;
199 MCAPI
void simpleQuad(
210 MCAPI
void tex(::Vec2
const& v);
212 MCAPI
void tex(
float u,
float v);
214 MCAPI
void tex1(::Vec2
const& v);
216 MCAPI
void tex2(::Vec2
const& v);
218 MCAPI
void triangle(uint i1, uint i2, uint i3);
220 MCAPI
void triggerIntercept(::mce::MaterialPtr
const& material, ::mce::TexturePtr
const& texture);
224 MCAPI
void vertex(::Vec3
const& pos);
226 MCAPI
void vertex(
float x,
float y,
float z);
228 MCAPI
void vertexUV(::Vec3
const& pos, ::Vec2
const& uv);
230 MCAPI
void vertexUV(::Vec3
const& pos,
float u,
float v);
232 MCAPI
void vertexUV(
float x,
float y,
float z,
float u,
float v);
234 MCAPI ~Tessellator();
240 MCFOLD static ::Tessellator::SupplementaryFieldAutoGenerationMode
241 selectFieldAutoGenerationMode(::mce::framebuilder::FrameLightingModelCapabilities
const& lightingModelCaps);
247 MCAPI
void* $ctor(::std::weak_ptr<::mce::BufferResourceService> bufferResourceService);
Definition Tessellator.h:5
Definition MaterialPtr.h:15
Definition TexturePtr.h:7
Definition TessellatorQuadInfo.h:5
Definition Tessellator.h:17
Definition BufferResourceService.h:7
Definition MeshDataVertexFieldCounts.h:7
Definition FrameLightingModelCapabilities.h:7