Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_viewport.c
| Show First 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | |||||
| static void gpu_viewport_textures_create(GPUViewport *viewport) | static void gpu_viewport_textures_create(GPUViewport *viewport) | ||||
| { | { | ||||
| int *size = viewport->size; | int *size = viewport->size; | ||||
| float empty_pixel[4] = {0.0f, 0.0f, 0.0f, 0.0f}; | float empty_pixel[4] = {0.0f, 0.0f, 0.0f, 0.0f}; | ||||
| eGPUTextureUsage usage = GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT; | eGPUTextureUsage usage = GPU_TEXTURE_USAGE_SHADER_READ | GPU_TEXTURE_USAGE_ATTACHMENT; | ||||
| if (viewport->color_render_tx[0] == NULL) { | if (viewport->color_render_tx[0] == NULL) { | ||||
| /* NOTE: dtxl_color texture requires write support as it may be written to by the realtime | |||||
| * compositor. */ | |||||
| viewport->color_render_tx[0] = GPU_texture_create_2d_ex( | viewport->color_render_tx[0] = GPU_texture_create_2d_ex( | ||||
| "dtxl_color", UNPACK2(size), 1, GPU_RGBA16F, usage, NULL); | "dtxl_color", UNPACK2(size), 1, GPU_RGBA16F, usage | GPU_TEXTURE_USAGE_SHADER_WRITE, NULL); | ||||
| viewport->color_overlay_tx[0] = GPU_texture_create_2d_ex( | viewport->color_overlay_tx[0] = GPU_texture_create_2d_ex( | ||||
| "dtxl_color_overlay", UNPACK2(size), 1, GPU_SRGB8_A8, usage, NULL); | "dtxl_color_overlay", UNPACK2(size), 1, GPU_SRGB8_A8, usage, NULL); | ||||
| if (GPU_clear_viewport_workaround()) { | if (GPU_clear_viewport_workaround()) { | ||||
| GPU_texture_clear(viewport->color_render_tx[0], GPU_DATA_FLOAT, empty_pixel); | GPU_texture_clear(viewport->color_render_tx[0], GPU_DATA_FLOAT, empty_pixel); | ||||
| GPU_texture_clear(viewport->color_overlay_tx[0], GPU_DATA_FLOAT, empty_pixel); | GPU_texture_clear(viewport->color_overlay_tx[0], GPU_DATA_FLOAT, empty_pixel); | ||||
| } | } | ||||
| } | } | ||||
| if ((viewport->flag & GPU_VIEWPORT_STEREO) != 0 && viewport->color_render_tx[1] == NULL) { | if ((viewport->flag & GPU_VIEWPORT_STEREO) != 0 && viewport->color_render_tx[1] == NULL) { | ||||
| viewport->color_render_tx[1] = GPU_texture_create_2d_ex( | viewport->color_render_tx[1] = GPU_texture_create_2d_ex("dtxl_color_stereo", | ||||
| "dtxl_color_stereo", UNPACK2(size), 1, GPU_RGBA16F, usage, NULL); | UNPACK2(size), | ||||
| 1, | |||||
| GPU_RGBA16F, | |||||
| usage | GPU_TEXTURE_USAGE_SHADER_WRITE, | |||||
| NULL); | |||||
| viewport->color_overlay_tx[1] = GPU_texture_create_2d_ex( | viewport->color_overlay_tx[1] = GPU_texture_create_2d_ex( | ||||
| "dtxl_color_overlay_stereo", UNPACK2(size), 1, GPU_SRGB8_A8, usage, NULL); | "dtxl_color_overlay_stereo", UNPACK2(size), 1, GPU_SRGB8_A8, usage, NULL); | ||||
| if (GPU_clear_viewport_workaround()) { | if (GPU_clear_viewport_workaround()) { | ||||
| GPU_texture_clear(viewport->color_render_tx[1], GPU_DATA_FLOAT, empty_pixel); | GPU_texture_clear(viewport->color_render_tx[1], GPU_DATA_FLOAT, empty_pixel); | ||||
| GPU_texture_clear(viewport->color_overlay_tx[1], GPU_DATA_FLOAT, empty_pixel); | GPU_texture_clear(viewport->color_overlay_tx[1], GPU_DATA_FLOAT, empty_pixel); | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 457 Lines • Show Last 20 Lines | |||||