载入中...
搜索中...
未找到
PbrVariantPlan.h
浏览该文件的文档.
1#pragma once
2
3#include <array>
4#include <cstdint>
5#include <limits>
6
7#include "common/Result.h"
9
10namespace eve::graphics::webgpu {
11
13enum PbrFragmentResourceFlag : std::uint32_t {
14 PbrEnvironment = 1u << 0,
15 PbrShadows = 1u << 1,
16 PbrExtras = 1u << 2,
17 PbrColors = 1u << 3,
18 PbrFadeNoise = 1u << 4,
19};
20
22enum PbrVertexResourceFlag : std::uint32_t {
23 PbrVertexField = 1u << 0,
24 PbrMotionField = 1u << 1,
25 PbrMotionNoise = 1u << 2,
26};
27
30 std::uint32_t sampledTexturesPerStage = 17;
31 std::uint32_t samplersPerStage = 16;
32};
33
36 static constexpr std::uint32_t NoSampler = std::numeric_limits<std::uint32_t>::max();
37
38 std::uint32_t canonicalTextureMask = 0;
39 std::uint32_t detailTextureMask = 0;
40 std::uint32_t fragmentFlags = 0;
41 std::uint32_t vertexFlags = 0;
42 std::uint32_t fragmentTextures = 0;
43 std::uint32_t fragmentSamplers = 0;
44 std::uint32_t vertexTextures = 0;
45 std::uint32_t vertexSamplers = 0;
51
53 bool operator==(const PbrVariantPlan&) const = default;
54};
55
65[[nodiscard]] Result<PbrVariantPlan> planPbrVariant(const PbrSurface& surface, bool environment, bool shadows,
66 const PbrVariantLimits& limits = {});
67
68} // namespace eve::graphics::webgpu
Move-only, checked operation results for the common layer.
const AssetImportLimits & limits
Move-only operation result carrying either a value or Status.
Definition Result.h:155
PbrVertexResourceFlag
PbrVertexResourceFlag public API.
Result< PbrVariantPlan > planPbrVariant(const PbrSurface &surface, bool environment, bool shadows, const PbrVariantLimits &limits)
Plan only resources reachable for an immutable PBR draw snapshot.
PbrFragmentResourceFlag
PbrFragmentResourceFlag public API.
Owning material parameter snapshot; texture pointers remain borrowed. Base color/metallic/roughness c...
Definition PbrSurface.h:218
Device resource limits relevant to one extended PBR shader variant.
Stable resource-layout key and checked stage counts for a PBR snapshot.
static constexpr std::uint32_t NoSampler
bool operator==(const PbrVariantPlan &) const =default
Operator ==.
std::array< std::uint32_t, 11 > canonicalSamplerRepresentatives
std::array< std::uint32_t, 3 > detailSamplerRepresentatives