42 lines
1.0 KiB
GLSL
42 lines
1.0 KiB
GLSL
|
|
struct Camera {
|
|
mat4 m_View; // 64
|
|
mat4 m_Projection; // 128
|
|
mat4 m_InvView; // 192
|
|
mat4 m_InvProjection; // 256
|
|
vec4 m_Position; // 272
|
|
};
|
|
|
|
struct Lighting
|
|
{
|
|
uint m_EnvCubeHandle; // 4
|
|
uint m_DiffuseIrradianceHandle; // 8
|
|
uint m_PrefilterHandle; // 12
|
|
uint m_BrdfLutHandle; // 16
|
|
uint m_LightHandle; // 20
|
|
uint m_PointLightIndexer; // 24
|
|
uint m_DirectionalLightIndexer; // 28
|
|
};
|
|
|
|
layout(set=1, binding=0) uniform Ubo {
|
|
Camera camera;
|
|
Lighting lights;
|
|
};
|
|
|
|
// Little Endian storage. First short is least significant.
|
|
#define IndexerCount(Indexer) (Indexer & 0xFFFF)
|
|
#define IndexerOffset(Indexer) ((Indexer & 0xFFFF0000) >> 16)
|
|
|
|
#define PI 3.1415926535
|
|
|
|
vec3 Uncharted2Tonemap(vec3 color)
|
|
{
|
|
float A = 0.15f;
|
|
float B = 0.50f;
|
|
float C = 0.10f;
|
|
float D = 0.20f;
|
|
float E = 0.02f;
|
|
float F = 0.30f;
|
|
float W = 11.2f;
|
|
return ((color * (A * color + C * B) + D * E) / (color * (A * color + B) + D * F)) - E / F;
|
|
} |