2023-09-05 20:19:53 +08:00
|
|
|
|
#pragma once
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
|
|
|
|
#include<hgl/graph/mtl/StdMaterial.h>
|
|
|
|
|
#include<hgl/graph/mtl/ShaderBuffer.h>
|
|
|
|
|
|
|
|
|
|
STD_MTL_NAMESPACE_BEGIN
|
|
|
|
|
constexpr const ShaderBufferSource SBS_ViewportInfo=
|
|
|
|
|
{
|
|
|
|
|
"ViewportInfo",
|
|
|
|
|
"viewport",
|
|
|
|
|
|
|
|
|
|
R"(
|
2023-06-01 14:47:05 +08:00
|
|
|
|
mat4 ortho_matrix;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
vec2 canvas_resolution;
|
|
|
|
|
vec2 viewport_resolution;
|
|
|
|
|
vec2 inv_viewport_resolution;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
)"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr const ShaderBufferSource SBS_CameraInfo=
|
|
|
|
|
{
|
|
|
|
|
"CameraInfo",
|
|
|
|
|
"camera",
|
|
|
|
|
|
|
|
|
|
R"(
|
2023-06-01 14:47:05 +08:00
|
|
|
|
mat4 projection;
|
|
|
|
|
mat4 inverse_projection;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
mat4 view;
|
|
|
|
|
mat4 inverse_view;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
mat4 vp;
|
|
|
|
|
mat4 inverse_vp;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2024-07-02 23:43:25 +08:00
|
|
|
|
vec4 frustum_planes[6];
|
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
mat4 sky;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
vec3 pos; //eye
|
|
|
|
|
vec3 view_line; //pos-target
|
|
|
|
|
vec3 world_up;
|
2023-05-15 21:52:57 +08:00
|
|
|
|
|
2024-06-16 22:58:45 +08:00
|
|
|
|
vec3 billboard_up;
|
|
|
|
|
vec3 billboard_right;
|
2024-06-13 01:30:30 +08:00
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
float znear,zfar;)"
|
2023-05-15 21:52:57 +08:00
|
|
|
|
};
|
|
|
|
|
|
2024-05-25 17:58:39 +08:00
|
|
|
|
constexpr const char LocalToWorldStruct[]="LocalToWorld";
|
|
|
|
|
constexpr const DescriptorSetType DST_LocalToWorld=DescriptorSetType::PerFrame;
|
|
|
|
|
|
|
|
|
|
constexpr const ShaderBufferSource SBS_LocalToWorld=
|
|
|
|
|
{
|
|
|
|
|
"LocalToWorldData",
|
|
|
|
|
"l2w",
|
|
|
|
|
|
|
|
|
|
R"(
|
|
|
|
|
mat4 mats[L2W_MAX_COUNT];
|
|
|
|
|
)"
|
|
|
|
|
};
|
|
|
|
|
|
2023-09-05 20:19:53 +08:00
|
|
|
|
// UBO必须严格指定数组的大小
|
|
|
|
|
// SSBO则不需要,使用[]方式指定为动态大小数组
|
|
|
|
|
|
2023-05-22 14:30:38 +08:00
|
|
|
|
constexpr const char MaterialInstanceStruct[]="MaterialInstance";
|
2024-05-25 17:58:39 +08:00
|
|
|
|
constexpr const DescriptorSetType DST_MaterialInstance=DescriptorSetType::PerMaterial;
|
2023-05-22 14:30:38 +08:00
|
|
|
|
|
2023-09-20 21:53:30 +08:00
|
|
|
|
constexpr const ShaderBufferSource SBS_MaterialInstance=
|
2023-05-15 21:52:57 +08:00
|
|
|
|
{
|
|
|
|
|
"MaterialInstanceData",
|
|
|
|
|
"mtl",
|
|
|
|
|
|
2023-06-01 14:47:05 +08:00
|
|
|
|
R"(
|
2023-06-02 20:45:19 +08:00
|
|
|
|
MaterialInstance mi[MI_MAX_COUNT];)"
|
2023-05-15 21:52:57 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr const ShaderBufferSource SBS_JointInfo=
|
|
|
|
|
{
|
|
|
|
|
"JointInfo",
|
|
|
|
|
"joint",
|
|
|
|
|
|
|
|
|
|
R"(
|
|
|
|
|
mat4 mats[];
|
|
|
|
|
)"
|
|
|
|
|
};
|
|
|
|
|
STD_MTL_NAMESPACE_END
|