Merge pull request #32389 from akien-mga/vulkan
Better format generated shader headers
This commit is contained in:
commit
52f96abd8b
5 changed files with 50 additions and 55 deletions
|
@ -586,6 +586,7 @@ def include_file_in_rd_header(filename, header_data, depth):
|
||||||
|
|
||||||
return header_data
|
return header_data
|
||||||
|
|
||||||
|
|
||||||
def build_rd_header(filename):
|
def build_rd_header(filename):
|
||||||
header_data = RDHeaderStruct()
|
header_data = RDHeaderStruct()
|
||||||
include_file_in_rd_header(filename, header_data, 0)
|
include_file_in_rd_header(filename, header_data, 0)
|
||||||
|
@ -605,52 +606,47 @@ def build_rd_header(filename):
|
||||||
fd.write("#define " + out_file_ifdef + "_RD\n")
|
fd.write("#define " + out_file_ifdef + "_RD\n")
|
||||||
|
|
||||||
out_file_class = out_file_base.replace(".glsl.gen.h", "").title().replace("_", "").replace(".", "") + "ShaderRD"
|
out_file_class = out_file_base.replace(".glsl.gen.h", "").title().replace("_", "").replace(".", "") + "ShaderRD"
|
||||||
fd.write("\n\n")
|
fd.write("\n")
|
||||||
fd.write("#include \"servers/visual/rasterizer_rd/shader_rd.h\"\n\n\n")
|
fd.write("#include \"servers/visual/rasterizer_rd/shader_rd.h\"\n\n")
|
||||||
fd.write("class " + out_file_class + " : public ShaderRD {\n\n")
|
fd.write("class " + out_file_class + " : public ShaderRD {\n\n")
|
||||||
fd.write("public:\n\n")
|
fd.write("public:\n\n")
|
||||||
|
|
||||||
|
fd.write("\t" + out_file_class + "() {\n\n")
|
||||||
fd.write("\t"+out_file_class+"() {\n\n")
|
|
||||||
|
|
||||||
if (len(header_data.compute_lines)):
|
if (len(header_data.compute_lines)):
|
||||||
|
|
||||||
fd.write("\t\tstatic const char _compute_code[]={\n")
|
fd.write("\t\tstatic const char _compute_code[] = {\n")
|
||||||
for x in header_data.compute_lines:
|
for x in header_data.compute_lines:
|
||||||
for c in x:
|
for c in x:
|
||||||
fd.write(str(ord(c)) + ",")
|
fd.write(str(ord(c)) + ",")
|
||||||
|
|
||||||
fd.write(str(ord('\n')) + ",")
|
fd.write(str(ord('\n')) + ",")
|
||||||
|
|
||||||
fd.write("\t\t0};\n\n")
|
fd.write("\t\t0};\n\n")
|
||||||
fd.write("\t\tsetup(nullptr,nullptr,_compute_code,\""+out_file_class+"\");\n")
|
|
||||||
|
fd.write("\t\tsetup(nullptr, nullptr, _compute_code, \"" + out_file_class + "\");\n")
|
||||||
fd.write("\t}\n")
|
fd.write("\t}\n")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
fd.write("\t\tstatic const char _vertex_code[]={\n")
|
fd.write("\t\tstatic const char _vertex_code[] = {\n")
|
||||||
for x in header_data.vertex_lines:
|
for x in header_data.vertex_lines:
|
||||||
for c in x:
|
for c in x:
|
||||||
fd.write(str(ord(c)) + ",")
|
fd.write(str(ord(c)) + ",")
|
||||||
|
|
||||||
fd.write(str(ord('\n')) + ",")
|
fd.write(str(ord('\n')) + ",")
|
||||||
fd.write("\t\t0};\n\n")
|
fd.write("\t\t0};\n\n")
|
||||||
|
|
||||||
fd.write("\t\tstatic const char _fragment_code[]={\n")
|
fd.write("\t\tstatic const char _fragment_code[]={\n")
|
||||||
for x in header_data.fragment_lines:
|
for x in header_data.fragment_lines:
|
||||||
for c in x:
|
for c in x:
|
||||||
fd.write(str(ord(c)) + ",")
|
fd.write(str(ord(c)) + ",")
|
||||||
|
|
||||||
fd.write(str(ord('\n')) + ",")
|
fd.write(str(ord('\n')) + ",")
|
||||||
|
|
||||||
fd.write("\t\t0};\n\n")
|
fd.write("\t\t0};\n\n")
|
||||||
fd.write("\t\tsetup(_vertex_code,_fragment_code,nullptr,\""+out_file_class+"\");\n")
|
|
||||||
fd.write("\t}\n")
|
|
||||||
|
|
||||||
|
fd.write("\t\tsetup(_vertex_code, _fragment_code, nullptr, \"" + out_file_class + "\");\n")
|
||||||
|
fd.write("\t}\n")
|
||||||
|
|
||||||
fd.write("};\n\n")
|
fd.write("};\n\n")
|
||||||
|
|
||||||
fd.write("#endif\n\n")
|
fd.write("#endif\n")
|
||||||
fd.close()
|
fd.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Import('env')
|
Import('env')
|
||||||
Import('env_modules')
|
Import('env_modules')
|
||||||
|
|
||||||
env_bu = env_modules.Clone()
|
env_basisu = env_modules.Clone()
|
||||||
|
|
||||||
# Thirdparty source files
|
# Thirdparty source files
|
||||||
# Not unbundled so far since not widespread as shared library
|
# Not unbundled so far since not widespread as shared library
|
||||||
|
@ -28,16 +28,16 @@ tool_sources = [
|
||||||
tool_sources = [thirdparty_dir + file for file in tool_sources]
|
tool_sources = [thirdparty_dir + file for file in tool_sources]
|
||||||
transcoder_sources = [thirdparty_dir + "transcoder/basisu_transcoder.cpp"]
|
transcoder_sources = [thirdparty_dir + "transcoder/basisu_transcoder.cpp"]
|
||||||
|
|
||||||
env_bu.Append(CPPPATH=[thirdparty_dir, thirdparty_dir + "transcoder"])
|
env_basisu.Append(CPPPATH=[thirdparty_dir, thirdparty_dir + "transcoder"])
|
||||||
|
|
||||||
if env['target'] == "debug":
|
if env['target'] == "debug":
|
||||||
env_bu.Append(CPPFLAGS=["-DBASISU_DEVEL_MESSAGES=1", "-DBASISD_ENABLE_DEBUG_FLAGS=1"])
|
env_basisu.Append(CPPFLAGS=["-DBASISU_DEVEL_MESSAGES=1", "-DBASISD_ENABLE_DEBUG_FLAGS=1"])
|
||||||
|
|
||||||
env_thirdparty = env_bu.Clone()
|
env_thirdparty = env_basisu.Clone()
|
||||||
env_thirdparty.disable_warnings()
|
env_thirdparty.disable_warnings()
|
||||||
if env['tools']:
|
if env['tools']:
|
||||||
env_thirdparty.add_source_files(env.modules_sources, tool_sources)
|
env_thirdparty.add_source_files(env.modules_sources, tool_sources)
|
||||||
env_thirdparty.add_source_files(env.modules_sources, transcoder_sources)
|
env_thirdparty.add_source_files(env.modules_sources, transcoder_sources)
|
||||||
|
|
||||||
# Godot source files
|
# Godot source files
|
||||||
env_bu.add_source_files(env.modules_sources, "*.cpp")
|
env_basisu.add_source_files(env.modules_sources, "*.cpp")
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
#include "register_types.h"
|
#include "register_types.h"
|
||||||
|
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
#include "texture_bu.h"
|
#include "servers/visual_server.h"
|
||||||
|
#include "texture_basisu.h"
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
#include "thirdparty/basis_universal/basisu_comp.h"
|
#include <basisu_comp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "thirdparty/basis_universal/transcoder/basisu.h"
|
#include <transcoder/basisu_transcoder.h>
|
||||||
|
|
||||||
#include "servers/visual_server.h"
|
|
||||||
|
|
||||||
enum BasisDecompressFormat {
|
enum BasisDecompressFormat {
|
||||||
BASIS_DECOMPRESS_RG,
|
BASIS_DECOMPRESS_RG,
|
||||||
|
@ -250,7 +249,7 @@ void register_basis_universal_types() {
|
||||||
Image::basis_universal_packer = basis_universal_packer;
|
Image::basis_universal_packer = basis_universal_packer;
|
||||||
#endif
|
#endif
|
||||||
Image::basis_universal_unpacker = basis_universal_unpacker;
|
Image::basis_universal_unpacker = basis_universal_unpacker;
|
||||||
// ClassDB::register_class<TextureBU>();
|
//ClassDB::register_class<TextureBasisU>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregister_basis_universal_types() {
|
void unregister_basis_universal_types() {
|
||||||
|
|
|
@ -1,57 +1,57 @@
|
||||||
#include "texture_bu.h"
|
#include "texture_basisu.h"
|
||||||
#if 0
|
#if 0
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
#include "basisu_comp.h"
|
#include <basisu_comp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "transcoder/basisu.h"
|
#include <transcoder/basisu_transcoder.h>
|
||||||
|
|
||||||
void TextureBU::_bind_methods() {
|
void TextureBasisU::_bind_methods() {
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_bu_data", "data"), &TextureBU::set_bu_data);
|
ClassDB::bind_method(D_METHOD("set_basisu_data", "data"), &TextureBasisU::set_basisu_data);
|
||||||
ClassDB::bind_method(D_METHOD("get_bu_data"), &TextureBU::get_data);
|
ClassDB::bind_method(D_METHOD("get_basisu_data"), &TextureBasisU::get_data);
|
||||||
ClassDB::bind_method(D_METHOD("import"), &TextureBU::import);
|
ClassDB::bind_method(D_METHOD("import"), &TextureBasisU::import);
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "bu_data"), "set_bu_data", "get_bu_data");
|
ADD_PROPERTY(PropertyInfo(Variant::POOL_BYTE_ARRAY, "basisu_data"), "set_basisu_data", "get_basisu_data");
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int TextureBU::get_width() const {
|
int TextureBasisU::get_width() const {
|
||||||
|
|
||||||
return tex_size.x;
|
return tex_size.x;
|
||||||
};
|
};
|
||||||
|
|
||||||
int TextureBU::get_height() const {
|
int TextureBasisU::get_height() const {
|
||||||
|
|
||||||
return tex_size.y;
|
return tex_size.y;
|
||||||
};
|
};
|
||||||
|
|
||||||
RID TextureBU::get_rid() const {
|
RID TextureBasisU::get_rid() const {
|
||||||
|
|
||||||
return texture;
|
return texture;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
bool TextureBU::has_alpha() const {
|
bool TextureBasisU::has_alpha() const {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
void TextureBU::set_flags(uint32_t p_flags) {
|
void TextureBasisU::set_flags(uint32_t p_flags) {
|
||||||
|
|
||||||
flags = p_flags;
|
flags = p_flags;
|
||||||
VisualServer::get_singleton()->texture_set_flags(texture, p_flags);
|
VisualServer::get_singleton()->texture_set_flags(texture, p_flags);
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t TextureBU::get_flags() const {
|
uint32_t TextureBasisU::get_flags() const {
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void TextureBU::set_bu_data(const PoolVector<uint8_t>& p_data) {
|
void TextureBasisU::set_basisu_data(const PoolVector<uint8_t>& p_data) {
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
data = p_data;
|
data = p_data;
|
||||||
|
@ -118,7 +118,7 @@ void TextureBU::set_bu_data(const PoolVector<uint8_t>& p_data) {
|
||||||
VisualServer::get_singleton()->texture_set_data(texture, img);
|
VisualServer::get_singleton()->texture_set_data(texture, img);
|
||||||
};
|
};
|
||||||
|
|
||||||
Error TextureBU::import(const Ref<Image>& p_img) {
|
Error TextureBasisU::import(const Ref<Image>& p_img) {
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ Error TextureBU::import(const Ref<Image>& p_img) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
set_bu_data(budata);
|
set_basisu_data(budata);
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
#else
|
#else
|
||||||
|
@ -183,19 +183,19 @@ Error TextureBU::import(const Ref<Image>& p_img) {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
PoolVector<uint8_t> TextureBU::get_bu_data() const {
|
PoolVector<uint8_t> TextureBasisU::get_basisu_data() const {
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
TextureBU::TextureBU() {
|
TextureBasisU::TextureBasisU() {
|
||||||
|
|
||||||
flags = FLAGS_DEFAULT;
|
flags = FLAGS_DEFAULT;
|
||||||
texture = VisualServer::get_singleton()->texture_create();
|
texture = VisualServer::get_singleton()->texture_create();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
TextureBU::~TextureBU() {
|
TextureBasisU::~TextureBasisU() {
|
||||||
|
|
||||||
VisualServer::get_singleton()->free(texture);
|
VisualServer::get_singleton()->free(texture);
|
||||||
};
|
};
|
|
@ -1,15 +1,15 @@
|
||||||
#include "scene/resources/texture.h"
|
#include "scene/resources/texture.h"
|
||||||
|
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
#include "thirdparty/basis_universal/basisu_comp.h"
|
#include <basisu_comp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "thirdparty/basis_universal/transcoder/basisu.h"
|
#include <transcoder/basisu_transcoder.h>
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
class TextureBU : public Texture {
|
class TextureBasisU : public Texture {
|
||||||
|
|
||||||
GDCLASS(TextureBU, Texture);
|
GDCLASS(TextureBasisU, Texture);
|
||||||
RES_BASE_EXTENSION("butex");
|
RES_BASE_EXTENSION("butex");
|
||||||
|
|
||||||
RID texture;
|
RID texture;
|
||||||
|
@ -34,13 +34,13 @@ public:
|
||||||
|
|
||||||
Error import(const Ref<Image> &p_img);
|
Error import(const Ref<Image> &p_img);
|
||||||
|
|
||||||
void set_bu_data(const PoolVector<uint8_t>& p_data);
|
void set_basisu_data(const PoolVector<uint8_t>& p_data);
|
||||||
|
|
||||||
PoolVector<uint8_t> get_bu_data() const;
|
PoolVector<uint8_t> get_basisu_data() const;
|
||||||
String get_img_path() const;
|
String get_img_path() const;
|
||||||
|
|
||||||
TextureBU();
|
TextureBasisU();
|
||||||
~TextureBU();
|
~TextureBasisU();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue