Blender V4.3
gpu_shader_create_info.hh File Reference
#include "BLI_hash.hh"
#include "BLI_string_ref.hh"
#include "BLI_vector.hh"
#include "GPU_common_types.hh"
#include "GPU_material.hh"
#include "GPU_texture.hh"
#include <iostream>

Go to the source code of this file.

Classes

struct  blender::gpu::shader::StageInterfaceInfo
 
struct  blender::gpu::shader::StageInterfaceInfo::InOut
 
struct  blender::gpu::shader::ShaderCreateInfo
 Describe inputs & outputs, stage interfaces, resources and sources of a shader. If all data is correctly provided, this is all that is needed to create and compile a GPUShader. More...
 
struct  blender::gpu::shader::ShaderCreateInfo::VertIn
 
struct  blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout
 
struct  blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout
 
struct  blender::gpu::shader::ShaderCreateInfo::FragOut
 
struct  blender::gpu::shader::ShaderCreateInfo::Sampler
 
struct  blender::gpu::shader::ShaderCreateInfo::Image
 
struct  blender::gpu::shader::ShaderCreateInfo::UniformBuf
 
struct  blender::gpu::shader::ShaderCreateInfo::StorageBuf
 
struct  blender::gpu::shader::ShaderCreateInfo::Resource
 
struct  blender::gpu::shader::ShaderCreateInfo::PushConst
 
struct  blender::DefaultHash< Vector< blender::gpu::shader::SpecializationConstant::Value > >
 

Namespaces

namespace  blender
 
namespace  blender::gpu
 
namespace  blender::gpu::shader
 

Macros

#define GPU_FORCE_ENABLE_SHADER_PRINTF   0
 
#define GPU_SHADER_PRINTF_ENABLE   1
 
#define GPU_SHADER_PRINTF_SLOT   13
 
#define GPU_SHADER_PRINTF_MAX_CAPACITY   (1024 * 4)
 
#define GPU_SSBO_INDEX_BUF_SLOT   7
 
#define GPU_SHADER_INTERFACE_INFO(_interface, _inst_name)
 
#define GPU_SHADER_CREATE_INFO(_info)
 
#define TEST_EQUAL(a, b, _member)
 
#define TEST_VECTOR_EQUAL(a, b, _vector)
 

Enumerations

enum class  blender::gpu::shader::BuiltinBits {
  blender::gpu::shader::NONE = 0 , blender::gpu::shader::BARYCENTRIC_COORD = (1 << 0) , blender::gpu::shader::FRAG_COORD = (1 << 2) , blender::gpu::shader::FRONT_FACING = (1 << 4) ,
  blender::gpu::shader::GLOBAL_INVOCATION_ID = (1 << 5) , blender::gpu::shader::INSTANCE_ID = (1 << 6) , blender::gpu::shader::LAYER = (1 << 7) , blender::gpu::shader::LOCAL_INVOCATION_ID = (1 << 8) ,
  blender::gpu::shader::LOCAL_INVOCATION_INDEX = (1 << 9) , blender::gpu::shader::NUM_WORK_GROUP = (1 << 10) , blender::gpu::shader::POINT_COORD = (1 << 11) , blender::gpu::shader::POINT_SIZE = (1 << 12) ,
  blender::gpu::shader::PRIMITIVE_ID = (1 << 13) , blender::gpu::shader::VERTEX_ID = (1 << 14) , blender::gpu::shader::WORK_GROUP_ID = (1 << 15) , blender::gpu::shader::WORK_GROUP_SIZE = (1 << 16) ,
  blender::gpu::shader::VIEWPORT_INDEX = (1 << 17) , blender::gpu::shader::TEXTURE_ATOMIC = (1 << 18) , blender::gpu::shader::USE_PRINTF = (1 << 28) , blender::gpu::shader::USE_DEBUG_DRAW = (1 << 29) ,
  blender::gpu::shader::USE_DEBUG_PRINT = (1 << 30)
}
 
enum class  blender::gpu::shader::DepthWrite { blender::gpu::shader::UNCHANGED = 0 , blender::gpu::shader::ANY , blender::gpu::shader::GREATER , blender::gpu::shader::LESS }
 
enum class  blender::gpu::shader::ImageType {
  blender::gpu::shader::FLOAT_BUFFER = 0 , blender::gpu::shader::FLOAT_1D , blender::gpu::shader::FLOAT_1D_ARRAY , blender::gpu::shader::FLOAT_2D ,
  blender::gpu::shader::FLOAT_2D_ARRAY , blender::gpu::shader::FLOAT_3D , blender::gpu::shader::FLOAT_CUBE , blender::gpu::shader::FLOAT_CUBE_ARRAY ,
  blender::gpu::shader::INT_BUFFER , blender::gpu::shader::INT_1D , blender::gpu::shader::INT_1D_ARRAY , blender::gpu::shader::INT_2D ,
  blender::gpu::shader::INT_2D_ARRAY , blender::gpu::shader::INT_3D , blender::gpu::shader::INT_CUBE , blender::gpu::shader::INT_CUBE_ARRAY ,
  blender::gpu::shader::UINT_BUFFER , blender::gpu::shader::UINT_1D , blender::gpu::shader::UINT_1D_ARRAY , blender::gpu::shader::UINT_2D ,
  blender::gpu::shader::UINT_2D_ARRAY , blender::gpu::shader::UINT_3D , blender::gpu::shader::UINT_CUBE , blender::gpu::shader::UINT_CUBE_ARRAY ,
  blender::gpu::shader::SHADOW_2D , blender::gpu::shader::SHADOW_2D_ARRAY , blender::gpu::shader::SHADOW_CUBE , blender::gpu::shader::SHADOW_CUBE_ARRAY ,
  blender::gpu::shader::DEPTH_2D , blender::gpu::shader::DEPTH_2D_ARRAY , blender::gpu::shader::DEPTH_CUBE , blender::gpu::shader::DEPTH_CUBE_ARRAY ,
  blender::gpu::shader::UINT_2D_ATOMIC , blender::gpu::shader::UINT_2D_ARRAY_ATOMIC , blender::gpu::shader::UINT_3D_ATOMIC , blender::gpu::shader::INT_2D_ATOMIC ,
  blender::gpu::shader::INT_2D_ARRAY_ATOMIC , blender::gpu::shader::INT_3D_ATOMIC
}
 
enum class  blender::gpu::shader::Qualifier {
  blender::gpu::shader::NO_RESTRICT = (1 << 0) , blender::gpu::shader::READ = (1 << 1) , blender::gpu::shader::WRITE = (1 << 2) , blender::gpu::shader::READ_WRITE = READ | WRITE ,
  blender::gpu::shader::QUALIFIER_MAX = (WRITE << 1) - 1
}
 
enum class  blender::gpu::shader::Frequency { blender::gpu::shader::BATCH = 0 , blender::gpu::shader::PASS , blender::gpu::shader::GEOMETRY }
 
enum class  blender::gpu::shader::DualBlend { blender::gpu::shader::NONE = 0 , blender::gpu::shader::SRC_0 , blender::gpu::shader::SRC_1 }
 
enum class  blender::gpu::shader::Interpolation { blender::gpu::shader::SMOOTH = 0 , blender::gpu::shader::FLAT , blender::gpu::shader::NO_PERSPECTIVE }
 
enum class  blender::gpu::shader::PrimitiveIn {
  blender::gpu::shader::POINTS = 0 , blender::gpu::shader::LINES , blender::gpu::shader::LINES_ADJACENCY , blender::gpu::shader::TRIANGLES ,
  blender::gpu::shader::TRIANGLES_ADJACENCY
}
 
enum class  blender::gpu::shader::PrimitiveOut {
  blender::gpu::shader::POINTS = 0 , blender::gpu::shader::LINE_STRIP , blender::gpu::shader::TRIANGLE_STRIP , blender::gpu::shader::LINES ,
  blender::gpu::shader::TRIANGLES
}
 

Functions

static Type blender::gpu::shader::to_type (const eGPUType type)
 
static std::ostream & blender::gpu::shader::operator<< (std::ostream &stream, const Type type)
 
static std::ostream & blender::gpu::shader::operator<< (std::ostream &stream, const eGPUType type)
 
 blender::gpu::shader::ENUM_OPERATORS (BuiltinBits, BuiltinBits::USE_DEBUG_PRINT)
 
 blender::gpu::shader::ENUM_OPERATORS (Qualifier, Qualifier::QUALIFIER_MAX)
 

Detailed Description

Descriptor type used to define shader structure, resources and interfaces.

Some rule of thumb:

  • Do not include anything else than this file in each info file.

Definition in file gpu_shader_create_info.hh.

Macro Definition Documentation

◆ GPU_FORCE_ENABLE_SHADER_PRINTF

#define GPU_FORCE_ENABLE_SHADER_PRINTF   0

Definition at line 26 of file gpu_shader_create_info.hh.

◆ GPU_SHADER_CREATE_INFO

#define GPU_SHADER_CREATE_INFO ( _info)
Value:
ShaderCreateInfo _info(#_info); \
_info

Definition at line 46 of file gpu_shader_create_info.hh.

◆ GPU_SHADER_INTERFACE_INFO

#define GPU_SHADER_INTERFACE_INFO ( _interface,
_inst_name )
Value:
StageInterfaceInfo _interface(#_interface, _inst_name); \
_interface

Definition at line 43 of file gpu_shader_create_info.hh.

◆ GPU_SHADER_PRINTF_ENABLE

#define GPU_SHADER_PRINTF_ENABLE   1

Definition at line 29 of file gpu_shader_create_info.hh.

◆ GPU_SHADER_PRINTF_MAX_CAPACITY

#define GPU_SHADER_PRINTF_MAX_CAPACITY   (1024 * 4)

◆ GPU_SHADER_PRINTF_SLOT

#define GPU_SHADER_PRINTF_SLOT   13

Definition at line 33 of file gpu_shader_create_info.hh.

Referenced by GPU_shader_bind().

◆ GPU_SSBO_INDEX_BUF_SLOT

#define GPU_SSBO_INDEX_BUF_SLOT   7

Definition at line 37 of file gpu_shader_create_info.hh.

Referenced by GPU_batch_bind_as_resources().

◆ TEST_EQUAL

◆ TEST_VECTOR_EQUAL

#define TEST_VECTOR_EQUAL ( a,
b,
_vector )
Value:
TEST_EQUAL(a, b, _vector.size()); \
for (auto i : _vector.index_range()) { \
TEST_EQUAL(a, b, _vector[i]); \
}
#define TEST_EQUAL(a, b, _member)

Definition at line 401 of file gpu_shader_create_info.hh.

Referenced by blender::gpu::shader::ShaderCreateInfo::operator==().