engine/bin/data/shaders/common/structs.h

187 lines
2.6 KiB
C

struct EyeMatrices {
mat4 view;
mat4 projection;
mat4 iView;
mat4 iProjection;
mat4 iProjectionView;
vec4 eyePos;
};
struct Viewport {
mat4 view;
mat4 projection;
};
struct Cursor {
vec2 position;
vec2 radius;
vec4 color;
};
struct Ray {
vec3 origin;
vec3 direction;
vec3 position;
float distance;
};
struct Space {
vec3 eye;
vec3 world;
};
struct Fog {
vec3 color;
float stepScale;
vec3 offset;
float densityScale;
vec2 range;
float densityThreshold;
float densityMultiplier;
float absorbtion;
float padding1;
float padding2;
float padding3;
};
struct Mode {
uint type;
uint scalar;
vec2 padding;
vec4 parameters;
};
struct Light {
mat4 view;
mat4 projection;
vec3 position;
float radius;
vec3 color;
float power;
int type;
int typeMap;
int indexMap;
float depthBias;
};
struct Material {
vec4 colorBase;
vec4 colorEmissive;
float factorMetallic;
float factorRoughness;
float factorOcclusion;
float factorAlphaCutoff;
int indexAlbedo;
int indexNormal;
int indexEmissive;
int indexOcclusion;
int indexMetallicRoughness;
int padding1;
int padding2;
int modeAlpha;
};
struct Texture {
int index;
int samp;
int remap;
float blend;
vec4 lerp;
};
struct DrawCommand {
uint indices; // triangle count
uint instances; // instance count
uint indexID; // starting triangle position
int vertexID; // starting vertex position
uint instanceID; // starting instance position
uint padding; //
uint materialID; // material to use for this draw call
uint vertices; // number of vertices used
};
struct Bounds {
vec3 min;
float padding1;
vec3 max;
float padding2;
};
struct Instance {
mat4 model;
vec4 color;
uint materialID;
uint primitiveID;
uint meshID;
uint objectID;
int jointID;
int lightmapID;
uint imageID;
uint padding2;
Bounds bounds;
};
struct SurfaceMaterial {
vec4 albedo;
vec4 indirect;
float metallic;
float roughness;
float occlusion;
uint padding;
};
struct Surface {
uint pass;
vec2 uv;
vec2 st;
Space position;
Space normal;
Ray ray;
SurfaceMaterial material;
Instance instance;
vec4 fragment;
} surface;
// VXGI stuff
struct Vxgi {
mat4 matrix;
float cascadePower;
float granularity;
uint shadows;
uint padding1;
};
struct Voxel {
uvec2 id;
vec3 position;
vec3 normal;
vec2 uv;
vec4 color;
};
struct VoxelInfo {
vec3 min;
vec3 max;
float mipmapLevels;
float radianceSize;
float radianceSizeRecip;
} voxelInfo;