Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/studiolight.c
| Show First 20 Lines • Show All 497 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| if (sl->flag & STUDIOLIGHT_EXTERNAL_FILE) { | if (sl->flag & STUDIOLIGHT_EXTERNAL_FILE) { | ||||
| BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EXTERNAL_IMAGE_LOADED); | BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EXTERNAL_IMAGE_LOADED); | ||||
| ImBuf *ibuf = sl->equirect_radiance_buffer; | ImBuf *ibuf = sl->equirect_radiance_buffer; | ||||
| sl->equirect_radiance_gputexture = GPU_texture_create_2d( | sl->equirect_radiance_gputexture = GPU_texture_create_2d( | ||||
| ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, NULL); | ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, NULL); | ||||
| GPUTexture *tex = sl->equirect_radiance_gputexture; | GPUTexture *tex = sl->equirect_radiance_gputexture; | ||||
| GPU_texture_bind(tex, 0); | |||||
| GPU_texture_filter_mode(tex, true); | GPU_texture_filter_mode(tex, true); | ||||
| GPU_texture_wrap_mode(tex, true, true); | GPU_texture_wrap_mode(tex, true, true); | ||||
| GPU_texture_unbind(tex); | |||||
| } | } | ||||
| sl->flag |= STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE; | sl->flag |= STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE; | ||||
| } | } | ||||
| static void studiolight_create_matcap_gputexture(StudioLightImage *sli) | static void studiolight_create_matcap_gputexture(StudioLightImage *sli) | ||||
| { | { | ||||
| BLI_assert(sli->ibuf); | BLI_assert(sli->ibuf); | ||||
| ImBuf *ibuf = sli->ibuf; | ImBuf *ibuf = sli->ibuf; | ||||
| ▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | |||||
| static void studiolight_create_equirect_irradiance_gputexture(StudioLight *sl) | static void studiolight_create_equirect_irradiance_gputexture(StudioLight *sl) | ||||
| { | { | ||||
| if (sl->flag & STUDIOLIGHT_EXTERNAL_FILE) { | if (sl->flag & STUDIOLIGHT_EXTERNAL_FILE) { | ||||
| BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECT_IRRADIANCE_IMAGE_CALCULATED); | BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECT_IRRADIANCE_IMAGE_CALCULATED); | ||||
| ImBuf *ibuf = sl->equirect_irradiance_buffer; | ImBuf *ibuf = sl->equirect_irradiance_buffer; | ||||
| sl->equirect_irradiance_gputexture = GPU_texture_create_2d( | sl->equirect_irradiance_gputexture = GPU_texture_create_2d( | ||||
| ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, NULL); | ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, NULL); | ||||
| GPUTexture *tex = sl->equirect_irradiance_gputexture; | GPUTexture *tex = sl->equirect_irradiance_gputexture; | ||||
| GPU_texture_bind(tex, 0); | |||||
| GPU_texture_filter_mode(tex, true); | GPU_texture_filter_mode(tex, true); | ||||
| GPU_texture_wrap_mode(tex, true, true); | GPU_texture_wrap_mode(tex, true, true); | ||||
| GPU_texture_unbind(tex); | |||||
| } | } | ||||
| sl->flag |= STUDIOLIGHT_EQUIRECT_IRRADIANCE_GPUTEXTURE; | sl->flag |= STUDIOLIGHT_EQUIRECT_IRRADIANCE_GPUTEXTURE; | ||||
| } | } | ||||
| static void studiolight_calculate_radiance(ImBuf *ibuf, float color[4], const float direction[3]) | static void studiolight_calculate_radiance(ImBuf *ibuf, float color[4], const float direction[3]) | ||||
| { | { | ||||
| float uv[2]; | float uv[2]; | ||||
| direction_to_equirect(uv, direction); | direction_to_equirect(uv, direction); | ||||
| ▲ Show 20 Lines • Show All 1,089 Lines • Show Last 20 Lines | |||||