project-aster/samples/03_model_render/shader/bindless_structs.hlsli

58 lines
1.2 KiB
HLSL

struct VertexData
{
float4 m_Normal;
float2 m_TexCoord0;
float2 m_TexCoord1;
float4 m_Color0;
};
struct TransformData
{
float4x4 transform;
float4x4 normalTransform;
};
struct MaterialData
{
float m_AlbedoFactor[4];
float m_EmissionFactor[3];
float m_MetalFactor;
float m_RoughFactor;
uint m_AlbedoTex;
uint m_NormalTex;
uint m_MetalRoughTex;
uint m_OcclusionTex;
uint m_EmissionTex;
};
struct Block
{
uint vertexBufferHandle;
uint vertexDataHandle;
uint materialBufferHandle;
uint nodeBufferHandle;
int m_MaterialIdx;
uint m_NodeIdx;
};
struct Camera
{
float4x4 view;
float4x4 proj;
};
#define INVALID_HANDLE 0xFFFFFFFF
[[vk::binding(0, 0)]] StructuredBuffer<float4> vertexBuffer[];
[[vk::binding(0, 0)]] StructuredBuffer<VertexData> vertexDataBuffer[];
[[vk::binding(0, 0)]] StructuredBuffer<MaterialData> materialsBuffer[];
[[vk::binding(0, 0)]] StructuredBuffer<TransformData> nodeBuffer[];
[[vk::binding(1, 0)]] Texture2D<float4> textures[];
[[vk::binding(1, 0)]] SamplerState immutableSamplers[];
[[vk::binding(0, 1)]] ConstantBuffer<Camera> camera;
[[vk::push_constant]]
Block pcb;