Skip to content

Instantly share code, notes, and snippets.

@corporateshark
Created November 3, 2019 17:16
Show Gist options
  • Save corporateshark/f77e134376f89af0f586954fdccb234f to your computer and use it in GitHub Desktop.
Save corporateshark/f77e134376f89af0f586954fdccb234f to your computer and use it in GitHub Desktop.
// Author: Sergey Kosarevsky [email protected]
#pragma once
#include "glslang/Include/ShaderTypes.h"
#include "glslang/Include/ResourceLimits.h"
#include "glslang/MachineIndependent/Versions.h"
typedef void* ShaderHandle;
typedef void* ProgramHandle;
struct ShaderCompilationInput
{
size_t size; // sizeof(ShaderCompilationInput)
//
glslang::EShSource lang;
EShLanguage stage;
glslang::EShClient client;
glslang::EShTargetClientVersion clientVersion;
glslang::EShTargetLanguage targetLanguage;
glslang::EShTargetLanguageVersion targetLanguageVersion;
const char* code;
const TBuiltInResource* builtInResources;
int defaultVersion;
EProfile defaultProfile;
bool forceDefaultVersionAndProfile;
bool forwardCompatible;
EShMessages messages;
};
struct ProgramLinkOptions
{
size_t size; // sizeof(ProgramLinkOptions)
//
EShMessages messages;
};
void glslangInitializeProcess();
void glslangFinalizeProcess();
ShaderHandle glslangShaderCreate(const ShaderCompilationInput*);
void glslangShaderDelete(ShaderHandle);
bool glslangShaderPreprocess(ShaderHandle, const ShaderCompilationInput*);
bool glslangShaderParse(ShaderHandle, const ShaderCompilationInput*);
const char* glslangShaderGetPreprocessedCode(ShaderHandle);
const char* glslangShaderGetInfoLog(ShaderHandle);
const char* glslangShaderGetInfoDebugLog(ShaderHandle);
ProgramHandle glslangProgramCreate();
void glslangProgramDelete(ProgramHandle);
void glslangProgramAddShader(ProgramHandle, ShaderHandle);
bool glslangProgramLink(ProgramHandle, const ProgramLinkOptions*);
void glslangProgramSPIRVGenerate(ProgramHandle, EShLanguage);
size_t glslangProgramSPIRVGetSize( ProgramHandle );
void glslangProgramSPIRVGet( ProgramHandle, unsigned int* );
const char* glslangProgramSPIRVGetMessages(ProgramHandle);
const char* glslangProgramGetInfoLog(ProgramHandle);
const char* glslangProgramGetInfoDebugLog(ProgramHandle);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment