forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			50 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | #pragma once
 | ||
|  | 
 | ||
|  | /*! \file raytrace.h
 | ||
|  |     \brief Preliminary API, requires some actual D3D12/Vulkan code to fill in | ||
|  |     the acceleration-structure and pipeline-details. Also requires manually | ||
|  |     compiled shaders. Use with caution. | ||
|  | */ | ||
|  | 
 | ||
|  | #include <kinc/global.h>
 | ||
|  | 
 | ||
|  | #include <kinc/backend/graphics5/raytrace.h>
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | struct kinc_g5_command_list; | ||
|  | struct kinc_g5_constant_buffer; | ||
|  | struct kinc_g5_index_buffer; | ||
|  | struct kinc_g5_render_target; | ||
|  | struct kinc_g5_texture; | ||
|  | struct kinc_g5_vertex_buffer; | ||
|  | 
 | ||
|  | typedef struct kinc_raytrace_pipeline { | ||
|  | 	struct kinc_g5_constant_buffer *_constant_buffer; | ||
|  | 	kinc_raytrace_pipeline_impl_t impl; | ||
|  | } kinc_raytrace_pipeline_t; | ||
|  | 
 | ||
|  | KINC_FUNC void kinc_raytrace_pipeline_init(kinc_raytrace_pipeline_t *pipeline, struct kinc_g5_command_list *command_list, void *ray_shader, int ray_shader_size, | ||
|  |                                            struct kinc_g5_constant_buffer *constant_buffer); | ||
|  | KINC_FUNC void kinc_raytrace_pipeline_destroy(kinc_raytrace_pipeline_t *pipeline); | ||
|  | 
 | ||
|  | typedef struct kinc_raytrace_acceleration_structure { | ||
|  | 	kinc_raytrace_acceleration_structure_impl_t impl; | ||
|  | } kinc_raytrace_acceleration_structure_t; | ||
|  | 
 | ||
|  | KINC_FUNC void kinc_raytrace_acceleration_structure_init(kinc_raytrace_acceleration_structure_t *accel, struct kinc_g5_command_list *command_list, | ||
|  |                                                          struct kinc_g5_vertex_buffer *vb, struct kinc_g5_index_buffer *ib); | ||
|  | KINC_FUNC void kinc_raytrace_acceleration_structure_destroy(kinc_raytrace_acceleration_structure_t *accel); | ||
|  | 
 | ||
|  | KINC_FUNC void kinc_raytrace_set_acceleration_structure(kinc_raytrace_acceleration_structure_t *accel); | ||
|  | KINC_FUNC void kinc_raytrace_set_pipeline(kinc_raytrace_pipeline_t *pipeline); | ||
|  | KINC_FUNC void kinc_raytrace_set_target(struct kinc_g5_texture *output); | ||
|  | KINC_FUNC void kinc_raytrace_dispatch_rays(struct kinc_g5_command_list *command_list); | ||
|  | KINC_FUNC void kinc_raytrace_copy(struct kinc_g5_command_list *command_list, struct kinc_g5_render_target *target, struct kinc_g5_texture *source); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 |