From 1a2e60b1dde6da8d523d1c7a71a14a0cda4bd88a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Mon, 5 Dec 2016 20:59:32 -0800 Subject: [PATCH] Updating embedded shader handling. --- tools/texturev/texturev.cpp | 73 ++++++++++++++----------------------- 1 file changed, 27 insertions(+), 46 deletions(-) diff --git a/tools/texturev/texturev.cpp b/tools/texturev/texturev.cpp index 0ea30e59c..cdfdbffa6 100644 --- a/tools/texturev/texturev.cpp +++ b/tools/texturev/texturev.cpp @@ -17,12 +17,6 @@ #include -#include "vs_texture.bin.h" -#include "fs_texture.bin.h" -#include "fs_texture_array.bin.h" -#include "vs_texture_cube.bin.h" -#include "fs_texture_cube.bin.h" - #include #include @@ -32,6 +26,25 @@ namespace stl = tinystl; #include "image.h" +#include + +#include "vs_texture.bin.h" +#include "fs_texture.bin.h" +#include "fs_texture_array.bin.h" +#include "vs_texture_cube.bin.h" +#include "fs_texture_cube.bin.h" + +static const bgfx::EmbeddedShader s_embeddedShaders[] = +{ + BGFX_EMBEDDED_SHADER(vs_texture), + BGFX_EMBEDDED_SHADER(fs_texture), + BGFX_EMBEDDED_SHADER(fs_texture_array), + BGFX_EMBEDDED_SHADER(vs_texture_cube), + BGFX_EMBEDDED_SHADER(fs_texture_cube), + + BGFX_EMBEDDED_SHADER_END() +}; + static const char* s_supportedExt[] = { "bmp", @@ -644,43 +657,11 @@ int _main_(int _argc, char** _argv) PosUvColorVertex::init(); - const bgfx::Memory* vs_texture; - const bgfx::Memory* fs_texture; - const bgfx::Memory* fs_texture_array; - const bgfx::Memory* vs_texture_cube; - const bgfx::Memory* fs_texture_cube; + bgfx::RendererType::Enum type = bgfx::getRendererType(); - switch (bgfx::getRendererType()) - { - case bgfx::RendererType::Direct3D9: - vs_texture = bgfx::makeRef(vs_texture_dx9, sizeof(vs_texture_dx9) ); - fs_texture = bgfx::makeRef(fs_texture_dx9, sizeof(fs_texture_dx9) ); - fs_texture_array = NULL; - vs_texture_cube = bgfx::makeRef(vs_texture_cube_dx9, sizeof(vs_texture_cube_dx9) ); - fs_texture_cube = bgfx::makeRef(fs_texture_cube_dx9, sizeof(fs_texture_cube_dx9) ); - break; - - case bgfx::RendererType::Direct3D11: - case bgfx::RendererType::Direct3D12: - vs_texture = bgfx::makeRef(vs_texture_dx11, sizeof(vs_texture_dx11) ); - fs_texture = bgfx::makeRef(fs_texture_dx11, sizeof(fs_texture_dx11) ); - fs_texture_array = bgfx::makeRef(fs_texture_array_dx11, sizeof(fs_texture_dx11) ); - vs_texture_cube = bgfx::makeRef(vs_texture_cube_dx11, sizeof(vs_texture_cube_dx11) ); - fs_texture_cube = bgfx::makeRef(fs_texture_cube_dx11, sizeof(fs_texture_cube_dx11) ); - break; - - default: - vs_texture = bgfx::makeRef(vs_texture_glsl, sizeof(vs_texture_glsl) ); - fs_texture = bgfx::makeRef(fs_texture_glsl, sizeof(fs_texture_glsl) ); - fs_texture_array = bgfx::makeRef(fs_texture_array_glsl, sizeof(fs_texture_array_glsl) ); - fs_texture = bgfx::makeRef(fs_texture_glsl, sizeof(fs_texture_glsl) ); - vs_texture_cube = bgfx::makeRef(vs_texture_cube_glsl, sizeof(vs_texture_cube_glsl) ); - fs_texture_cube = bgfx::makeRef(fs_texture_cube_glsl, sizeof(fs_texture_cube_glsl) ); - break; - } - - bgfx::ShaderHandle vsTexture = bgfx::createShader(vs_texture); - bgfx::ShaderHandle fsTexture = bgfx::createShader(fs_texture); + bgfx::ShaderHandle vsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_texture"); + bgfx::ShaderHandle fsTexture = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture"); + bgfx::ShaderHandle fsTextureArray = bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture_array"); bgfx::ProgramHandle textureProgram = bgfx::createProgram( vsTexture @@ -690,15 +671,15 @@ int _main_(int _argc, char** _argv) bgfx::ProgramHandle textureArrayProgram = bgfx::createProgram( vsTexture - , NULL != fs_texture_array - ? bgfx::createShader(fs_texture_array) + , bgfx::isValid(fsTextureArray) + ? fsTextureArray : fsTexture , true ); bgfx::ProgramHandle textureCubeProgram = bgfx::createProgram( - bgfx::createShader(vs_texture_cube) - , bgfx::createShader(fs_texture_cube) + bgfx::createEmbeddedShader(s_embeddedShaders, type, "vs_texture_cube") + , bgfx::createEmbeddedShader(s_embeddedShaders, type, "fs_texture_cube") , true );