| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*
- * Copyright 2011-2022 Branimir Karadzic. All rights reserved.
- * License: https://github.com/bkaradzic/bgfx/blob/master/LICENSE
- */
- #ifndef SHADERC_H_HEADER_GUARD
- #define SHADERC_H_HEADER_GUARD
- namespace bgfx
- {
- extern bool g_verbose;
- }
- #ifndef SHADERC_CONFIG_HLSL
- # define SHADERC_CONFIG_HLSL BX_PLATFORM_WINDOWS
- #endif // SHADERC_CONFIG_HLSL
- #include <alloca.h>
- #include <stdint.h>
- #include <string.h>
- #include <algorithm>
- #include <string>
- #include <vector>
- #include <unordered_map>
- #include <bx/bx.h>
- #include <bx/debug.h>
- #include <bx/commandline.h>
- #include <bx/endian.h>
- #include <bx/uint32_t.h>
- #include <bx/string.h>
- #include <bx/hash.h>
- #include <bx/file.h>
- #include "../../src/vertexlayout.h"
- namespace bgfx
- {
- extern bool g_verbose;
- bx::StringView nextWord(bx::StringView& _parse);
- constexpr uint8_t kUniformFragmentBit = 0x10;
- constexpr uint8_t kUniformSamplerBit = 0x20;
- constexpr uint8_t kUniformReadOnlyBit = 0x40;
- constexpr uint8_t kUniformCompareBit = 0x80;
- constexpr uint8_t kUniformMask = 0
- | kUniformFragmentBit
- | kUniformSamplerBit
- | kUniformReadOnlyBit
- | kUniformCompareBit
- ;
- const char* getUniformTypeName(UniformType::Enum _enum);
- UniformType::Enum nameToUniformTypeEnum(const char* _name);
- struct Uniform
- {
- Uniform()
- : type(UniformType::Count)
- , num(0)
- , regIndex(0)
- , regCount(0)
- , texComponent(0)
- , texDimension(0)
- , texFormat(0)
- {
- }
- std::string name;
- UniformType::Enum type;
- uint8_t num;
- uint16_t regIndex;
- uint16_t regCount;
- uint8_t texComponent;
- uint8_t texDimension;
- uint16_t texFormat;
- };
- struct Options
- {
- Options();
- void dump();
- char shaderType;
- std::string platform;
- std::string profile;
- std::string inputFilePath;
- std::string outputFilePath;
- std::vector<std::string> includeDirs;
- std::vector<std::string> defines;
- std::vector<std::string> dependencies;
- bool disasm;
- bool raw;
- bool preprocessOnly;
- bool depends;
- bool debugInformation;
- bool avoidFlowControl;
- bool noPreshader;
- bool partialPrecision;
- bool preferFlowControl;
- bool backwardsCompatibility;
- bool warningsAreErrors;
- bool keepIntermediate;
- bool optimize;
- uint32_t optimizationLevel;
- };
- typedef std::vector<Uniform> UniformArray;
- void printCode(const char* _code, int32_t _line = 0, int32_t _start = 0, int32_t _end = INT32_MAX, int32_t _column = -1);
- void strReplace(char* _str, const char* _find, const char* _replace);
- int32_t writef(bx::WriterI* _writer, const char* _format, ...);
- void writeFile(const char* _filePath, const void* _data, int32_t _size);
- bool compileGLSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer);
- bool compileHLSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer);
- bool compileMetalShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer);
- bool compilePSSLShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer);
- bool compileSPIRVShader(const Options& _options, uint32_t _version, const std::string& _code, bx::WriterI* _writer);
- const char* getPsslPreamble();
- } // namespace bgfx
- #endif // SHADERC_H_HEADER_GUARD
|