#ifndef SIMPLE_LIT_H #define SIMPLE_LIT_H #include "Material.h" #include "Rendering/Texture.h" #include "cglm/struct/vec3.h" typedef struct { vec3s albedo; float roughness; float metallic; } simple_lit_data_t; typedef struct { vec3s albedo; float roughness; float metallic; texture_entity_t albedo_texture; texture_entity_t roughness_texture; texture_entity_t metallic_texture; } simple_lit_properties_t; void simple_lit_data_default(const shading_context_t* context, const void* properties, void* data_out); vec3s sample_bsdf_simple_lit(const shading_context_t* context, const void* properties, const compute_surface_data_f compute_surface_data, uint32_t sample_index, uint32_t bounce, float* pdf_out); vec3s evaluate_bsdf_simple_lit(const shading_context_t* context, const void* properties, const compute_surface_data_f compute_surface_data); float sample_bsdf_pdf_simple_lit(const shading_context_t* context, const void* properties, const compute_surface_data_f compute_surface_data); inline material_entity_t material_create_simple_lit(const simple_lit_properties_t* properties, compute_surface_data_f surface_data, material_collection_t* collection) { return material_create(properties, sizeof(simple_lit_properties_t), surface_data, sample_bsdf_simple_lit, sample_bsdf_pdf_simple_lit, evaluate_bsdf_simple_lit, collection); } inline material_entity_t material_create_simple_lit_default(const simple_lit_properties_t* properties, material_collection_t* collection) { return material_create(properties, sizeof(simple_lit_properties_t), simple_lit_data_default, sample_bsdf_simple_lit, sample_bsdf_pdf_simple_lit, evaluate_bsdf_simple_lit, collection); } #endif // SIMPLE_LIT_H