Files
SimpleRayTracing/native/header/Lighting/SkyLight.h
Misaki f1d3dddb9a Change project structure;
Added new c# binding;
2025-12-30 20:54:05 +09:00

39 lines
1.2 KiB
C

#ifndef SKY_LIGHT_H
#define SKY_LIGHT_H
#include "Algorithm/BSDF.h"
#include "Algorithm/RayIntersection.h"
#include "Light.h"
#include <string.h>
typedef struct
{
vec3s color;
float intensity;
} constant_sky_data_t;
typedef struct
{
uint32_t width;
uint32_t height;
texture_handle_t texture;
float intensity;
float total_weight;
// Normalized discrete probability mass per texel (sum==1), indexed by [y * width + x]
float* pdf_uv_mass;
// CDF tables for correct runtime sampling (keeps wi/pdf consistent)
float* cdf_x; // size: width
float* cdf_y_transposed; // size: width * height, layout: [x * height + y]
} hdr_sky_data_t;
sky_light_t sky_create_constant_sky(const constant_sky_data_t* data);
path_output evaluate_bsdf_const_sky(const void* data, const light_shading_context_t* context, vec3s throughput, uint32_t sample_index);
sky_light_t sky_create_hdr_sky(const texture_collection_t* textures, texture_handle_t hdri_entity, float intensity);
path_output evaluate_bsdf_hdr_sky(const void* data, const light_shading_context_t* context, vec3s throughput, uint32_t sample_index);
void hdr_sky_free(hdr_sky_data_t* data);
#endif // SKY_LIGHT_H