When drawing curves or particle hair, the hair is refined using GPU shaders. See eParticleRefineShaderType. OpenGL since Blender 4.0 always uses compute shaders. Metal since Blender 4.1 always uses compute shaders. Vulkan will only uses compute shaders. The transform feedback isn't used and not supported by our vulkan backend. Transform feedback workaround was a Apple specific solution as they didn't support transform feedback. Metal didn't use Compute shaders in EEVEE-Legacy for performance reasons. Since EEVEE-Next/Workbench-Next Metal uses compute shaders. Fixes: #117497 Pull Request: https://projects.blender.org/blender/blender/pulls/117507
30 lines
737 B
C++
30 lines
737 B
C++
/* SPDX-FileCopyrightText: 2021 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup draw
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "draw_curves_private.hh"
|
|
#include "draw_hair_private.h"
|
|
|
|
struct GPUShader;
|
|
|
|
/* draw_shader.cc */
|
|
|
|
GPUShader *DRW_shader_hair_refine_get(ParticleRefineShader refinement);
|
|
|
|
GPUShader *DRW_shader_curves_refine_get(blender::draw::CurvesEvalShader type);
|
|
|
|
GPUShader *DRW_shader_debug_print_display_get();
|
|
GPUShader *DRW_shader_debug_draw_display_get();
|
|
GPUShader *DRW_shader_draw_visibility_compute_get();
|
|
GPUShader *DRW_shader_draw_view_finalize_get();
|
|
GPUShader *DRW_shader_draw_resource_finalize_get();
|
|
GPUShader *DRW_shader_draw_command_generate_get();
|
|
|
|
void DRW_shaders_free(void);
|