| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* SET 0, static data that does not change between any call */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct Vertex { | 
					
						
							|  |  |  | 	vec3 position; | 
					
						
							|  |  |  | 	float normal_z; | 
					
						
							|  |  |  | 	vec2 uv; | 
					
						
							|  |  |  | 	vec2 normal_xy; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | layout(set = 0, binding = 1, std430) restrict readonly buffer Vertices { | 
					
						
							|  |  |  | 	Vertex data[]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | vertices; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct Triangle { | 
					
						
							|  |  |  | 	uvec3 indices; | 
					
						
							|  |  |  | 	uint slice; | 
					
						
							|  |  |  | 	vec3 min_bounds; | 
					
						
							|  |  |  | 	uint pad0; | 
					
						
							|  |  |  | 	vec3 max_bounds; | 
					
						
							|  |  |  | 	uint pad1; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 2, std430) restrict readonly buffer Triangles { | 
					
						
							|  |  |  | 	Triangle data[]; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | triangles; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 3, std430) restrict readonly buffer GridIndices { | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 	uint data[]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | grid_indices; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define LIGHT_TYPE_DIRECTIONAL 0 | 
					
						
							|  |  |  | #define LIGHT_TYPE_OMNI 1 | 
					
						
							|  |  |  | #define LIGHT_TYPE_SPOT 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct Light { | 
					
						
							|  |  |  | 	vec3 position; | 
					
						
							|  |  |  | 	uint type; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	vec3 direction; | 
					
						
							|  |  |  | 	float energy; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	vec3 color; | 
					
						
							|  |  |  | 	float size; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	float range; | 
					
						
							|  |  |  | 	float attenuation; | 
					
						
							| 
									
										
										
										
											2021-02-06 21:39:08 +01:00
										 |  |  | 	float cos_spot_angle; | 
					
						
							|  |  |  | 	float inv_spot_attenuation; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-15 04:25:53 +05:30
										 |  |  | 	float shadow_blur; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 	bool static_bake; | 
					
						
							| 
									
										
										
										
											2022-06-15 04:25:53 +05:30
										 |  |  | 	uint pad[2]; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 4, std430) restrict readonly buffer Lights { | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 	Light data[]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | lights; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct Seam { | 
					
						
							|  |  |  | 	uvec2 a; | 
					
						
							|  |  |  | 	uvec2 b; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 5, std430) restrict readonly buffer Seams { | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 	Seam data[]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | seams; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 6, std430) restrict readonly buffer Probes { | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 	vec4 data[]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | probe_positions; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 7) uniform utexture3D grid; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 8) uniform texture2DArray albedo_tex; | 
					
						
							|  |  |  | layout(set = 0, binding = 9) uniform texture2DArray emission_tex; | 
					
						
							| 
									
										
										
										
											2020-05-01 09:34:23 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-11 14:02:37 +02:00
										 |  |  | layout(set = 0, binding = 10) uniform sampler linear_sampler; | 
					
						
							| 
									
										
										
										
											2021-10-01 23:20:20 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Fragment action constants | 
					
						
							|  |  |  | const uint FA_NONE = 0; | 
					
						
							|  |  |  | const uint FA_SMOOTHEN_POSITION = 1; |