Newer
Older
ForwardPlusRenderer / shaders / LightComputeShader.comp
#version 450

struct PointLight
{
	vec3 color;
    float luminance;
	vec3 position;
};

layout(binding = 0) uniform CameraUBO
{
  mat4 projection;
  mat4 view;
  vec3 position;
} camera;

layout(push_constant) uniform ViewportConstants
{
    vec4 viewport_size_tile_size;
    vec4 ambient_light;
} viewport_constants;

vec2 viewport_size = vec2(viewport_constants.x, viewport_constants.y); 
vec2 tile_size = vec2(viewport_constants.z, viewport_constants.w);

layout(set = 2, binding = 0) uniform sampler2D depth_sampler;

layout(set = 3, binding = 0) buffer PointLightSSBO
{
	PointLight lights[1024];
};

layout(set = 3, binding = 1) buffer writeonly LightCullingData
{
  uint visible_light_indices[];
  uint total_visible_lights;
};

struct Frustum
{
  vec4 planes[6];
  vec3 vertices[8];
};

struct NormalisedDeviceCoordinates
{
	const vec2 top_left;
	const vec2 top_right;
	const vec2 bottom_left;
	const vec2 bottom_right;
} ndc;

Frustum Create()
{
 //TODO: precalculate in CPU side
 mat4 projection_view = camera.projection* camera.view;
 mat4 inverse_pv = inverse(projection_view);

 vec2 tile_vertices[4];
 tile_vertices
}




void main()
{
}