12 #ifndef RV_VKShaderCompile_h 
   13 #define RV_VKShaderCompile_h 
   28 struct RV_SpvProgramCompileImpl;
 
   29 struct RV_SpvStageCompileImpl;
 
  149         return myProgram->getSpvModules(modules_out, messages_out);
 
  182         return myProgram->isValid();
 
  195                         int vertex_index)
 override 
  200                            int buffer_num)
 override 
  207                         const char *relative_to)
 override 
  216                          int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  220                           int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  224                           int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  228                           int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  232                     int array_size = 1, 
int *saved_idx = 
nullptr)
 override 
  236                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  240                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  244                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  248                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  252                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  256                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  260                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  264                        int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  269                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  273                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  277                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  281                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  285                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  289                      int array_size=1, 
int *saved_idx = 
nullptr)
 override 
  294                      int *saved_idx = 
nullptr)
 override 
  308                      std::ostream *os = 
nullptr)
 const override 
  326     void createInternalProgram();
 
  347                    const char *source_code,
 
  350                    bool dump_source_on_error = 
true) 
override;
 
  367             return myStageCompiler->isValid();
 
  430     : RE_ShaderAtlas(shader_atlas_file)
 
  459     createShaderImpl(
const char* 
program, 
const char* defines) 
override;
 
UT_Map< exint, UT_Map< RE_ShaderType, UT_Array< uint8_t > > > Programs
 
void loadShaderTexMaps(RE_Render *r) override
Loads texture maps specified by the RE_TextureMap bindTextureMap() 
 
void printUniforms(RE_Render *r, std::ostream *os=nullptr) const override
Prints all the active uniforms plus their values to stream os (or cerr) 
 
GT_API const UT_StringHolder filename
 
virtual void clearShaders(RE_Render *r, RE_ShaderType types=RE_SHADER_ALL)
Clears and deletes all the shader objects of a certain type (or all) 
 
bool bindVariable2(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
 
UT_SharedPtr< RE_ShaderHandle > RE_ShaderHandlePtr
 
bool bindMatrix3(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
int64 getMemoryUsage(bool inclusive) const override
 
bool bindImage(RE_Render *r, const UT_StringHolder &name, RE_Texture *image, RE_BufferAccess image_access) override
 
RV_API RE_ShaderType RVshaderTypeFromVE(VE_ShaderType type)
 
bool bindMatrix4(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
virtual bool linkShaders(RE_Render *r, UT_String *messages=nullptr)
 
bool bindVariableInt3(RE_Render *r, const UT_StringHolder &name, const int *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer vector-3. 
 
bool bindMatrix3(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
virtual const char * getPlatformDefines(RE_Render *r) const 
 
RV_ShaderAtlas(const UT_StringRef &shader_atlas_file)
 
GLenum GLenum GLsizei void * image
 
~RV_ShaderAtlas() override
 
RV_API bool RVisDefaultAttrib(const RV_ShaderInput &input)
 
unsigned long long uint64
 
bool bindVariable3(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool setSource(RE_Render *r, const char *source_code, int version, UT_String *messages=nullptr, bool dump_source_on_error=true) override
 
virtual bool detachShader(RE_Render *r, RE_ShaderStage *obj)
 
GLenum GLuint GLint GLint layer
 
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects. 
 
bool bindVariable4(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
RE_TextureDimension getTextureMapType(RE_Render *r, const UT_StringHolder &name) override
Return the texture type for the sampler named 'name'. 
 
bool getSpvModules(UT_Map< VE_ShaderType, UT_Array< T >> &modules_out, UT_WorkBuffer &messages_out)
 
bool validateShader(RE_Render *r, UT_String *messages=nullptr) override
 
bool bindTextureMap(RE_Render *r, const UT_StringHolder &name, const char *mapname, const char *relative_to) override
 
virtual RE_ShaderStage * newShader(RE_ShaderType type, const char *name=0)=0
 
GLint GLint GLsizei GLint GLenum GLenum type
 
RV_ShaderHandle(const char *program_file, bool reg_sh, const char *defines)
 
~RV_VKShaderProgramCompiler()
 
bool bindVariable3(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool getSpvModules(UT_Map< RE_ShaderType, UT_Array< uint8_t >> &modules_out, UT_WorkBuffer &messages_out)
 
UT_Array< UT_Array< exint > > SharedLayouts
 
bool bindVariableInt2(RE_Render *r, const UT_StringHolder &name, const int *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer vector-2. 
 
GLsizei GLsizei GLchar * source
 
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class. 
 
bool bindUint64(RE_Render *r, const UT_StringHolder &name, uint64 *val, int array_size=1, int *saved_idx=nullptr) override
64b Integer handle for bindless texturing 
 
bool bindMatrix4(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool bindVariable1(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool getSource(RE_Render *r, UT_String &source) override
 
bool bindVariableInt(RE_Render *r, const UT_StringHolder &name, const int *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
GLuint const GLchar * name
 
bool bindVariableInt4(RE_Render *r, const UT_StringHolder &name, const int *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer vector-4. 
 
bool bindMatrix2(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool setVertexInput(RE_Render *r, const char *name, int vertex_index) override
 
bool bindVariable2(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool setGeometryParms(RE_Render *r, int max_vertices, RE_PrimType input, RE_PrimType output) override
Specify geometry shader parameters. 
 
GT_API const UT_StringHolder version
 
bool bindMatrix2(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
RAII wrapper class for Vk Shader Module. 
 
RV_VKShaderStage(RE_ShaderType stage, const char *name=nullptr)
 
~RV_VKShaderStage() override
 
bool bindTexture(RE_Render *r, const UT_StringHolder &name, RE_Texture *tex, int *saved_idx=nullptr) override
 
RV_API int RVgetDefaultAttribLocation(const UT_StringRef &)
 
void loadBoundTextures(RE_Render *r) override
 
bool bindVariable4(RE_Render *r, const UT_StringHolder &name, const fpreal64 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
bool bindImageLayer(RE_Render *r, const UT_StringHolder &name, RE_Texture *image, RE_BufferAccess image_access, int layer) override
 
~RV_VKShaderStageCompiler()
 
bool bindVariable1(RE_Render *r, const UT_StringHolder &name, const fpreal32 *val, int array_size=1, int *saved_idx=nullptr) override
Generic Integer scalar. 
 
RV_VKShaderStageCompiler(const char *source, const char *name, RE_ShaderType stage, int version=0)
 
void unloadBoundTextures(RE_Render *r) override
 
RE_Shader * newShader(const char *name, int shader_version, RE_ShaderLanguage lang) override
 
RV_API VE_ShaderType RVshaderTypeToVE(RE_ShaderType type)
 
virtual bool attachShader(RE_Render *r, RE_ShaderStage *obj, UT_String *messages=nullptr)
 
void cleanup(RE_Render *r) override
 
void removeShader(RE_Render *r, bool update_re=true) override
 
RV_VKShaderProgramCompiler()
 
VE_ShaderType getStageType()
 
GLbitfield GLuint program
 
RV_API bool RVgetDefaultAttribFormat(int loc, RV_GPUType *out_type, int *out_vec_size)
 
SYS_FORCE_INLINE bool isstring() const 
 
virtual re_LibFunc * getShaderLibrary() const 
 
bool setFragmentOutput(RE_Render *r, const char *name, int buffer_num) override
 
void applyShader(RE_Render *r, bool update_re=true) override
 
Simple interface to building a shader from a .prog file.