29 #define STUDIOLIGHT_X_POS 0
30 #define STUDIOLIGHT_X_NEG 1
31 #define STUDIOLIGHT_Y_POS 2
32 #define STUDIOLIGHT_Y_NEG 3
33 #define STUDIOLIGHT_Z_POS 4
34 #define STUDIOLIGHT_Z_NEG 5
36 #define STUDIOLIGHT_ICON_ID_TYPE_RADIANCE (1 << 0)
37 #define STUDIOLIGHT_ICON_ID_TYPE_IRRADIANCE (1 << 1)
38 #define STUDIOLIGHT_ICON_ID_TYPE_MATCAP (1 << 2)
39 #define STUDIOLIGHT_ICON_ID_TYPE_MATCAP_FLIPPED (1 << 3)
41 #define STUDIOLIGHT_MAX_LIGHT 4
43 #define STUDIOLIGHT_ICON_SIZE 96
46 #define STUDIOLIGHT_SH_BANDS 2
48 #define STUDIOLIGHT_SH_COEFS_LEN (STUDIOLIGHT_SH_BANDS * STUDIOLIGHT_SH_BANDS)
50 #if STUDIOLIGHT_SH_BANDS > 3
52 # define STUDIOLIGHT_SH_EFFECTIVE_COEFS_LEN (STUDIOLIGHT_SH_COEFS_LEN - 7)
54 # define STUDIOLIGHT_SH_EFFECTIVE_COEFS_LEN STUDIOLIGHT_SH_COEFS_LEN
83 #define STUDIOLIGHT_FLAG_ALL (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_EXTERNAL_FILE)
84 #define STUDIOLIGHT_FLAG_ORIENTATIONS \
85 (STUDIOLIGHT_TYPE_STUDIO | STUDIOLIGHT_TYPE_WORLD | STUDIOLIGHT_TYPE_MATCAP)
86 #define STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE (STUDIOLIGHT_TYPE_WORLD)
87 #define STUDIOLIGHT_ORIENTATIONS_SOLID (STUDIOLIGHT_INTERNAL | STUDIOLIGHT_TYPE_STUDIO)
148 const float light_ambient[3]);
void BKE_studiolight_remove(StudioLight *sl)
struct StudioLight * BKE_studiolight_findindex(int index, int flag)
@ STUDIOLIGHT_EXTERNAL_IMAGE_LOADED
@ STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE
@ STUDIOLIGHT_MATCAP_SPECULAR_GPUTEXTURE
@ STUDIOLIGHT_USER_DEFINED
@ STUDIOLIGHT_EQUIRECT_IRRADIANCE_IMAGE_CALCULATED
@ STUDIOLIGHT_UI_EXPANDED
@ STUDIOLIGHT_SPHERICAL_HARMONICS_COEFFICIENTS_CALCULATED
@ STUDIOLIGHT_MATCAP_DIFFUSE_GPUTEXTURE
@ STUDIOLIGHT_TYPE_MATCAP
@ STUDIOLIGHT_RADIANCE_BUFFERS_CALCULATED
@ STUDIOLIGHT_SPECULAR_HIGHLIGHT_PASS
@ STUDIOLIGHT_EQUIRECT_IRRADIANCE_GPUTEXTURE
@ STUDIOLIGHT_TYPE_STUDIO
@ STUDIOLIGHT_EXTERNAL_FILE
struct StudioLight StudioLight
void StudioLightFreeFunction(struct StudioLight *, void *data)
struct ListBase * BKE_studiolight_listbase(void)
StudioLight * BKE_studiolight_load(const char *path, int type)
StudioLight * BKE_studiolight_create(const char *path, const SolidLight light[4], const float light_ambient[3])
struct StudioLightImage StudioLightImage
void BKE_studiolight_unset_icon_id(StudioLight *sl, int icon_id)
void BKE_studiolight_set_free_function(StudioLight *sl, StudioLightFreeFunction *free_function, void *data)
void BKE_studiolight_default(SolidLight lights[4], float light_ambient[3])
void BKE_studiolight_init(void)
struct StudioLight * BKE_studiolight_find(const char *name, int flag)
void BKE_studiolight_ensure_flag(StudioLight *sl, int flag)
#define STUDIOLIGHT_SH_EFFECTIVE_COEFS_LEN
struct StudioLight * BKE_studiolight_find_default(int flag)
#define STUDIOLIGHT_MAX_LIGHT
StudioLight * BKE_studiolight_studio_edit_get(void)
void BKE_studiolight_free(void)
void BKE_studiolight_refresh(void)
void BKE_studiolight_preview(uint *icon_buffer, StudioLight *sl, int icon_id_type)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
struct GPUTexture GPUTexture
struct GPUTexture * gputexture
StudioLightImage matcap_specular
struct StudioLight * prev
SolidLight light[STUDIOLIGHT_MAX_LIGHT]
void * free_function_data
struct StudioLight * next
struct GPUTexture * equirect_radiance_gputexture
float spherical_harmonics_coefs[STUDIOLIGHT_SH_EFFECTIVE_COEFS_LEN][3]
struct ImBuf * equirect_irradiance_buffer
StudioLightFreeFunction * free_function
struct ImBuf * equirect_radiance_buffer
int icon_id_matcap_flipped
StudioLightImage matcap_diffuse
struct ImBuf * radiance_cubemap_buffers[6]
struct GPUTexture * equirect_irradiance_gputexture