载入中...
搜索中...
未找到
Grass.h 文件参考
#include "common/Export.h"
#include "common/Result.h"
#include "common/PcgPhotoModeApply.h"
#include "graphics/Shader.h"
#include <cstdint>
#include <string>
#include <vector>
#include <glm/glm.hpp>

浏览源代码.

类

struct  eve::graphics::grass::GrassFoliageSettings
 Pcg-style static foliage surface controls packed into the grass shader profile. Values are copied during upload; colors are linear RGB. 更多...
 
struct  eve::graphics::grass::TerrainDetailOverwriteSettings
 Runtime terrain-detail overrides kept distinct from foliage material settings. 更多...
 
struct  eve::graphics::grass::Point
 Point public API. 更多...
 
struct  eve::graphics::grass::SampleParams
 SampleParams public API. 更多...
 
struct  eve::graphics::grass::BillboardMesh
 BillboardMesh public API. 更多...
 
struct  eve::graphics::grass::PackedAtlasInfo
 Layout of a packed 2x2-per-variant sway atlas (4 grass + 2 leaf typical). 更多...
 
class  eve::graphics::GrassField
 Dense grass + sparse dark tufts on a mesh. Caller owns GrassField*; GPU Mesh / Shader / Texture are owned by Graphics. 更多...
 
struct  eve::graphics::GrassField::BakeParams
 BakeParams public API. 更多...
 

命名空间

namespace  eve
 Build metadata (engine git commit, build time, third-party version).
 
namespace  eve::image
 
namespace  eve::graphics
 卡牌游戏 UI 工具模块:工厂 + 脚本绑定入口。 功能参考 ycarowr/UiCard:扇形手牌布局、抽牌/洗牌、悬浮放大、拖拽到落牌区、 敌方手牌(背面/偷看)、费用不足置灰,以及可实时调节的布局参数。 数据模型与渲染/交互逻辑见 CardTypes.h。
 
namespace  eve::graphics::grass
 t3ssel8r-style stylized grass.
 

枚举

enum class  eve::graphics::grass::TerrainDetailQuality {
  eve::graphics::grass::VeryLow64 , eve::graphics::grass::Low32 , eve::graphics::grass::Medium16 , eve::graphics::grass::High8 ,
  eve::graphics::grass::VeryHigh4 , eve::graphics::grass::Ultra2
}
 Pcg quality category derived from detailResolutionPerPatch. 更多...
 

函数

EVENGINE_API_BACKENDS TerrainDetailQuality eve::graphics::grass::terrainDetailQuality (int resolutionPerPatch) noexcept
 Classify a Unity terrain detail patch resolution with Pcg's exact default mapping.
 
EVENGINE_API_BACKENDS Result< int > eve::graphics::grass::applyTerrainDetailOverwrite (GrassFoliageSettings &foliage, const TerrainDetailOverwriteSettings &settings)
 Validate and copy TerrainDetailOverwrite distances/density into a foliage profile atomically.
 
std::vector< Point > eve::graphics::grass::samplePoisson (const float *posXYZ, const float *nrmXYZ, int vertexCount, const uint32_t *indices, int indexCount, const SampleParams &params={})
 Fast Poisson-disk / dart-throwing blue noise on a triangle mesh.
 
std::vector< Point > eve::graphics::grass::sampleHalton (const float *posXYZ, const float *nrmXYZ, int vertexCount, const uint32_t *indices, int indexCount, int count, uint32_t seed=1, float minSlopeDot=0.25f)
 Area-weighted Halton samples (deterministic, evenly spread).
 
EVENGINE_API_BACKENDS BillboardMesh eve::graphics::grass::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,1]^2 (0.5, 0) is the root normal.x = animation id, normal.y = height scale. normal.z uses legacy 0/1 for uniform width; independent width w encodes -w for dense or 1+w for dark grass. A normalized tint encodes RGB8 as negative normal.x; legacy tint {-1,-1,-1} retains id. The shader derives animation identity from the local root for tinted points, so model transforms do not change the wind phase. Alpha remains texture-owned.
 
int eve::graphics::grass::swayFrame (float time, float frameDuration, uint32_t instanceId, int frameCount=4)
 Discrete 4-frame index with a per-instance phase offset.
 
void eve::graphics::grass::makeSwayAtlasRGBA (int frameW, int frameH, int frames, std::vector< uint8_t > &rgbaOut)
 Procedural 4-frame fallback atlas (horizontal strip). GPU paths should load authored 2x2 PNG masks via packSwayAtlasRGBA / createSwayAtlasFromFiles.
 
int eve::graphics::grass::swayAtlasWidth (int frameW, int frames)
 Sway atlas width.
 
int eve::graphics::grass::swayAtlasHeight (int frameH)
 Sway atlas height.
 
Texture * eve::graphics::grass::createSwayAtlas (Graphics *gfx, int frameW=64, int frameH=64, int frames=4)
 Creates sway atlas.
 
void eve::graphics::grass::packSwayAtlasRGBA (const std::vector< std::string > &grassFiles, const std::vector< std::string > &leafFiles, std::vector< uint8_t > &rgbaOut, PackedAtlasInfo &info)
 Load white-on-black (or RGBA) 2x2 sway PNGs and pack them into one atlas.
 
Texture * eve::graphics::grass::createSwayAtlasFromFiles (Graphics *gfx, const std::vector< std::string > &grassFiles, const std::vector< std::string > &leafFiles, PackedAtlasInfo *infoOut=nullptr)
 Creates sway atlas from files.
 
Shader * eve::graphics::grass::createShader (Graphics *gfx)
 Creates shader.
 
EVENGINE_API_BACKENDS void eve::graphics::grass::bindDefaults (Shader *shader)
 Binds defaults.
 
void eve::graphics::grass::bindLayer (Shader *shader, bool alwaysDark)
 Binds layer.
 
void eve::graphics::grass::bindAtlasLayout (Shader *shader, const PackedAtlasInfo &info)
 Binds atlas layout.
 
EVENGINE_API_BACKENDS void eve::graphics::grass::bindFoliage (Shader *shader, const GrassFoliageSettings &settings)
 Select the static foliage profile and copy its validated surface parameters.
 
void eve::graphics::grass::setTime (Shader *shader, float seconds)
 Sets the time.
 
void eve::graphics::grass::setFrameDuration (Shader *shader, float seconds)
 Sets the frame duration.
 
EVENGINE_API_BACKENDS int eve::graphics::grass::paramCount ()
 Param count.
 
EVENGINE_API_BACKENDS std::string eve::graphics::grass::paramName (int index)
 Param name.
 
void eve::graphics::grass::makePlane (float sizeX, float sizeZ, int segX, int segZ, std::vector< float > &posXYZ, std::vector< float > &nrmXYZ, std::vector< uint32_t > &indices)
 Unit XZ plane (Y-up) for tests / demos.