载入中...
搜索中...
未找到
GrassPoints.cpp
浏览该文件的文档.
8Result<int> GrassField::bakePoints(const std::vector<grass::Point>& points, float width, float height) {
11Result<int> GrassField::bakeTexturedPoints(const std::vector<grass::Point>& points, float width, float height,
15Result<int> GrassField::bakeFoliagePoints(const std::vector<grass::Point>& points, float width, float height,
20Result<int> GrassField::setTerrainDetailOverwrite(const grass::TerrainDetailOverwriteSettings& settings) {
27 DiagnosticCode::InvalidArgument, "grass.detailOverwrite: uploaded foliage and valid settings required"));
40Result<int> GrassField::bakePointData(const std::vector<grass::Point>& points, float width, float height,
56 if (!std::isfinite(point.position.x) || !std::isfinite(point.position.y) || !std::isfinite(point.position.z) ||
60 double(point.widthScale > 0 ? point.widthScale : point.scale) * width > std::numeric_limits<float>::max() ||
65 return value && value->getWidth() > 0 && value->getHeight() > 0 && value->getFormat() == "RGBA8" &&
72 Diagnostic::error(DiagnosticCode::InvalidArgument, "grass.points: complete RGBA8 image required"));
74 const auto finite01 = [](float value) { return std::isfinite(value) && value >= 0.f && value <= 1.f; };
77 mask->getHeight() != image->getHeight() || !finite01(foliage->baseR) || !finite01(foliage->baseG) ||
79 !finite01(foliage->snowB) || !finite01(foliage->alphaCutoff) || !finite01(foliage->snowProgress) ||
90 DiagnosticCode::InvalidArgument, "grass.foliage: matching RGBA8 maps and finite surface settings required"));
131 gfx_->newMeshFromArrays(data.posXYZ.data(), data.nrmXYZ.data(), data.uvST.data(), int(data.posXYZ.size() / 3),
133 if (!candidateShader || !candidateAtlas || !candidateMesh || (foliage && (!candidateNormal || !candidateMask)))
135 Diagnostic::error(DiagnosticCode::InvalidArgument, "grass.points: GPU resource creation returned empty"));
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
virtual Texture * newTexture(int width, int height, const uint8_t *rgba, bool repeatU=false, bool repeatV=false)=0
Creates a texture. @ownership Caller deletes unless documented otherwise.
virtual Mesh * newMeshFromArrays(const float *posXYZ, const float *nrmXYZ, const float *uvST, int vertexCount, const uint32_t *indices, int indexCount)=0
Upload a triangle mesh from packed CPU arrays. Owned by Graphics. posXYZ required (vertexCount*3)....
Result< int > bakePoints(const std::vector< grass::Point > &points, float width, float height)
Upload explicit grass roots without resampling, using the built-in four-frame atlas.
Definition GrassPoints.cpp:8
Result< int > bakeFoliagePoints(const std::vector< grass::Point > &points, float width, float height, const image::ImageData &albedo, const image::ImageData &normal, const image::ImageData &mask, const grass::GrassFoliageSettings &settings)
Upload static foliage albedo, tangent normal and metallic/occlusion/thickness/smoothness masks....
Definition GrassPoints.cpp:15
Result< int > setTerrainDetailOverwrite(const grass::TerrainDetailOverwriteSettings &settings)
Apply Pcg terrain detail hard distance, shader fade and density to an uploaded foliage field.
Definition GrassPoints.cpp:20
Result< int > bakeTexturedPoints(const std::vector< grass::Point > &points, float width, float height, const image::ImageData &image)
Upload roots with one static RGBA8 image, preserving original RGB and alpha. Image storage is borrowe...
Definition GrassPoints.cpp:11
const float * pushConstantData() const
Definition Shader.h:105
EVENGINE_API_BACKENDS void bindFoliage(Shader *shader, const GrassFoliageSettings &settings)
Select the static foliage profile and copy its validated surface parameters.
Definition GrassParameters.cpp:64
Texture * createSwayAtlas(Graphics *gfx, int frameW, int frameH, int frames)
Creates sway atlas.
Definition Grass.cpp:348
EVENGINE_API_BACKENDS void bindDefaults(Shader *shader)
Binds defaults.
Definition GrassParameters.cpp:22
EVENGINE_API_BACKENDS Result< int > applyTerrainDetailOverwrite(GrassFoliageSettings &foliage, const TerrainDetailOverwriteSettings &settings)
Validate and copy TerrainDetailOverwrite distances/density into a foliage profile atomically.
Definition GrassParameters.cpp:90
EVENGINE_API_BACKENDS BillboardMesh buildBillboards(const std::vector< Point > &points, float width=0.62f, float height=0.95f, bool alwaysDark=false)
Expand a unit rectangle per point. Vertex layout: pos = grass root uv = quad corner in [0,...
Definition GrassBillboards.cpp:13
void bindAtlasLayout(Shader *shader, const PackedAtlasInfo &info)
Binds atlas layout.
Definition Grass.cpp:281
卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局...
Definition Animation.h:25
@ InvalidArgument
Definition Container.h:602
Pcg-style static foliage surface controls packed into the grass shader profile. Values are copied dur...
Definition Grass.h:40
float snowFadeDistance
Definition Grass.h:49
float snowMinimumHeight
Definition Grass.h:48
float hardRenderDistance
Definition Grass.h:46
Runtime terrain-detail overrides kept distinct from foliage material settings.
Definition Grass.h:55