Blender  V3.3
Classes | Namespaces | Macros | Enumerations | Functions
gpu_shader_create_info.hh File Reference
#include "BLI_string_ref.hh"
#include "BLI_vector.hh"
#include "GPU_material.h"
#include "GPU_texture.h"
#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
 

Namespaces

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

Macros

#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::Type {
  blender::gpu::shader::FLOAT = 0 , blender::gpu::shader::VEC2 , blender::gpu::shader::VEC3 , blender::gpu::shader::VEC4 ,
  blender::gpu::shader::MAT3 , blender::gpu::shader::MAT4 , blender::gpu::shader::UINT , blender::gpu::shader::UVEC2 ,
  blender::gpu::shader::UVEC3 , blender::gpu::shader::UVEC4 , blender::gpu::shader::INT , blender::gpu::shader::IVEC2 ,
  blender::gpu::shader::IVEC3 , blender::gpu::shader::IVEC4 , blender::gpu::shader::BOOL
}
 
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)
}
 
enum class  blender::gpu::shader::DepthWrite { blender::gpu::shader::ANY = 0 , blender::gpu::shader::GREATER , blender::gpu::shader::LESS , blender::gpu::shader::UNCHANGED }
 
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
}
 
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 }
 
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 }
 

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::WORK_GROUP_SIZE)
 
 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:

Definition in file gpu_shader_create_info.hh.

Macro Definition Documentation

◆ GPU_SHADER_CREATE_INFO

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

Definition at line 29 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 26 of file gpu_shader_create_info.hh.

◆ TEST_EQUAL

#define TEST_EQUAL (   a,
  b,
  _member 
)
Value:
if (!((a)._member == (b)._member)) { \
return false; \
}
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)

Definition at line 306 of file gpu_shader_create_info.hh.

◆ 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 311 of file gpu_shader_create_info.hh.