载入中...
搜索中...
未找到
TerrainImageAdapter.h
浏览该文件的文档.
1#pragma once
2#include <array>
3#include <memory>
4#include <vector>
5#include "common/Result.h"
6namespace ssq {
7class Table;
8}
9namespace eve::image {
10class ImageData;
11}
12namespace eve::procgen {
13class Heightmap;
14class TerrainSplatmap;
15struct TerrainImageMaskSettings;
16enum class TerrainMaskBlend;
19 bool enabled = false;
20 float power = 1, minimumHeight = 100, blendRange = 20, slopeBlend = 20, age = 0, scale = 1;
21 float colorR = 1, colorG = 1, colorB = 1;
22 float normalStrength = 3;
23 std::array<float, 4> maskRemapMin{0, 0, 0, 0}, maskRemapMax{1, 1, 3, 1};
28 void setMaskRemapMin(float r, float g, float b, float a) { maskRemapMin = {r, g, b, a}; }
30 void setMaskRemapMax(float r, float g, float b, float a) { maskRemapMax = {r, g, b, a}; }
31};
34 bool enabled = false;
35 float power = 1, minimumHeight = 0, maximumHeight = 3000, darkness = 0.2F;
36 float speed = 1, smoothness = 0.8F, scale = 2;
37};
44 float sizeA = 10, sizeB = 10, sizeC = 10, intensity = 0.5F;
45 bool objectSpace = false;
46};
49 bool enabled = false, objectSpace = false;
50 float nearStrength = 0.2F, nearNormalStrength = 0.5F, nearScale = 50, nearOffset = 0;
51 float farStrength = 0.2F, farNormalStrength = 0.5F, farScale = 200, farOffset = 0;
52};
55 bool enabled = true, objectSpace = false;
56 float nearTiling = 100, nearStrength = 0.6F, farTiling = 1000, farStrength = 0.8F;
57};
60public:
62 [[nodiscard]] Result<int> addColor(float red, float green, float blue, float alpha = 1);
64 [[nodiscard]] int getColorCount() const noexcept { return static_cast<int>(colors_.size()); }
65private:
67 const TerrainSplatPalette&);
68 std::vector<std::array<float, 4>> colors_;
69};
72 bool triPlanar = false, stochastic = false;
73 float tileSizeX = 8, tileSizeZ = 8, offsetX = 0, offsetZ = 0;
75 float tintR = 1, tintG = 1, tintB = 1, normalStrength = 1;
76 float aoMin = 0, smoothnessMin = 0, aoMax = 1, smoothnessMax = 1;
77 float geoAmount = 1, detailAmount = 1;
81};
84public:
92 GtsPackedLayerSet& operator=(GtsPackedLayerSet&&) noexcept;
94 GtsPackedLayerSet& operator=(const GtsPackedLayerSet&) = delete;
96 [[nodiscard]] Result<int> addLayer(const image::ImageData& albedoHeight,
97 const image::ImageData& normalMask,
100 int getLayerCount() const noexcept;
101private:
102 struct Impl;
103 std::unique_ptr<Impl> impl_;
104 friend EVENGINE_API_DOMAINS Result<int> bakeGtsPackedLayers(image::ImageData&, image::ImageData&, Heightmap&,
105 Heightmap&, const Heightmap&, const TerrainSplatmap&,
106 const GtsPackedLayerSet&, double, double, double,
107 double, double);
108 friend EVENGINE_API_DOMAINS Result<int> bakeGtsPackedLayerDisplacement(Heightmap&, Heightmap&, const Heightmap&,
109 const TerrainSplatmap&,
110 const GtsPackedLayerSet&, double, double,
111 double, double, double, double, double,
112 double, double);
113};
131[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsPackedLayers(
132 image::ImageData& albedo, image::ImageData& packedNormal, Heightmap& geoStrength, Heightmap& detailStrength,
133 const Heightmap& heights, const TerrainSplatmap& splatmap, const GtsPackedLayerSet& layers, double originX = 0,
134 double originY = 0, double originZ = 0, double spacingX = 1, double spacingZ = 1);
154[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsPackedLayerDisplacement(
155 Heightmap& displacement, Heightmap& tessellation, const Heightmap& heights, const TerrainSplatmap& splatmap,
156 const GtsPackedLayerSet& layers, double cameraX, double cameraY, double cameraZ, double tessellationMultiplier = 1,
157 double originX = 0, double originY = 0, double originZ = 0, double spacingX = 1, double spacingZ = 1);
172[[nodiscard]] Result<int> generateTerrainImageMaskFromImage(Heightmap& target, const Heightmap& input,
173 const image::ImageData& image, const Heightmap& curve,
175 TerrainMaskBlend mode);
181[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeTerrainSplatAlbedo(image::ImageData& output,
182 const TerrainSplatmap& splatmap,
201[[nodiscard]] EVENGINE_API_DOMAINS Result<int> generateGtsGlobalBlendDistance(
202 Heightmap& output, const Heightmap& heights, double cameraX, double cameraY, double cameraZ, double blendDistance,
203 double blendRange, double originX = 0, double originY = 0, double originZ = 0, double spacingX = 1,
204 double spacingZ = 1);
214[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsColorMapAlbedo(image::ImageData& output,
215 const image::ImageData& colorMap,
216 const Heightmap& globalBlendDistance,
230[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsMacroVariationAlbedo(image::ImageData& output,
231 const image::ImageData& variationMap,
233 double originX = 0, double originZ = 0,
234 double spacingX = 1, double spacingZ = 1);
249[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsGeologicalSurface(
250 image::ImageData& albedo, image::ImageData& packedNormal, const Heightmap& heights, const Heightmap& layerStrength,
251 const Heightmap& globalBlendDistance, const image::ImageData& geoAlbedo, const image::ImageData& geoNormal,
252 const GtsGeologicalSettings& settings, double originY = 0);
269[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsDetailSurface(
270 image::ImageData& albedo, image::ImageData& packedNormal, Heightmap& detailGreyscale,
271 const Heightmap& layerStrength, const Heightmap& globalBlendDistance, const image::ImageData& detailNormal,
272 const GtsDetailNormalSettings& settings, double originX = 0, double originZ = 0, double spacingX = 1,
273 double spacingZ = 1);
289[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsWeatherAlbedo(
290 image::ImageData& output, const Heightmap& heights, const image::ImageData& snowAlbedo,
291 const image::ImageData& snowMask, const GtsSnowSurfaceSettings& snow, const GtsRainSurfaceSettings& rain,
292 double originX = 0, double originZ = 0, double spacingX = 1, double spacingZ = 1,
293 const Heightmap* detailGreyscale = nullptr);
314[[nodiscard]] EVENGINE_API_DOMAINS Result<int> bakeGtsWeatherPbr(
315 image::ImageData& normalOutput, image::ImageData& maskOutput, Heightmap& displacement, Heightmap& tessellation,
316 const Heightmap& heights, const image::ImageData& snowNormal, const image::ImageData& snowMask,
317 const image::ImageData& rainData, const GtsSnowSurfaceSettings& snow, const GtsRainSurfaceSettings& rain,
318 double timeSeconds, double originX = 0, double originZ = 0, double spacingX = 1, double spacingZ = 1);
330[[nodiscard]] EVENGINE_API_DOMAINS Result<int> combinePcgMaskMapChannels(
331 image::ImageData& output, const image::ImageData& red, const image::ImageData& green, const image::ImageData& blue,
332 const image::ImageData& alpha, std::uint32_t activeChannels = 15);
333
345[[nodiscard]] EVENGINE_API_DOMAINS Result<int> placePcgMaskMapTileInto(image::ImageData& output,
346 const image::ImageData& tile, int destinationX,
347 int destinationY, int destinationWidth,
348 int destinationHeight);
349
351EVENGINE_API_DOMAINS void exposeTerrainImageAdapter(ssq::Table& table);
352} // namespace eve::procgen
LogicalId target
std::string output
graphics::Texture * albedo
EvpackChunkInput input
Definition Evpack.cpp:170
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::string palette
tensor::Graph g
Definition GpuGraph.cpp:7
vk::UniqueImage image
double r
MeleePoint3 b
Definition MeleeHit.cpp:41
MeleePoint3 a
Definition MeleeHit.cpp:40
Move-only, checked operation results for the common layer.
Heightmap curve
TerrainThermalSettings settings
double spacingZ
double spacingX
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Represents raw pixel data.
Definition ImageData.h:38
Owning ordered GTS packed albedo/height and normal/AO/smoothness texture layers.
GtsPackedLayerSet(GtsPackedLayerSet &&) noexcept
Gts packed layer set.
~GtsPackedLayerSet()
Gts packed layer set.
In-memory terrain heightmap: a dense float grid (row-major, index = y * width + x) materialized from ...
Definition Heightmap.h:21
Ordered linear RGBA colors used to visualize terrain splat layers.
int getColorCount() const noexcept
Return the number of layer colors.
Owning normalized terrain texture-layer weights with atomic mutation. Layers share one finite width/h...
TerrainMaskBlend
Ordered scalar-mask arithmetic; intermediate values are not clamped.
Definition TerrainStamp.h:9
Result< int > bakeTerrainSplatAlbedo(image::ImageData &output, const TerrainSplatmap &splatmap, const TerrainSplatPalette &palette)
Blend every splat layer color into a borrowed ImageData atomically.
enum EVENGINE_API_FOUNDATION Table
OT_TABLE (editable via Runtime table APIs / ReflectedPropertyModel).
Definition Runtime.h:121
EVEngine ECS 集成层:底层实现使用 sunxfancy/ECS.hpp https://github.com/sunxfancy/ECS.hpp
Definition ECS.h:14
GTS terrain colormap controls from GTSColorMapSettings.
GTS near/far detail-normal controls from GTSDetailSettings.
GTS height-axis geological overlay controls from GTSGeoSettings.
GTS three-scale macro color variation controls from GTSVariationSettings.
One GTS packed texture-array layer's planar sampling and material controls.
GTS rain albedo controls copied from GTSRainSettings.
GTS snow albedo controls copied from GTSSnowSettings.
void setMaskRemapMin(float r, float g, float b, float a)
Set finite packed snow-mask remap minima in RGBA order.
void setMaskRemapMax(float r, float g, float b, float a)
Set finite packed snow-mask remap maxima in RGBA order.
Small owning image product; raw pixels stay out of JSON metadata.
Image UV transform and color-selection settings, rotation in radians.