made rendering work
This commit is contained in:
@@ -3,6 +3,9 @@
|
||||
#include "ld.h"
|
||||
#include "target.h"
|
||||
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier0, "../external/funnystdlib/tier0/build.cpp")
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier1, "../external/funnystdlib/tier1/build.cpp")
|
||||
ADD_DEPENDENCY_BUILD_FILE(tier2, "../external/funnystdlib/tier2/build.cpp")
|
||||
DECLARE_BUILD_STAGE(libshadercompiler)
|
||||
{
|
||||
CProject_t stProject;
|
||||
@@ -13,6 +16,7 @@ DECLARE_BUILD_STAGE(libshadercompiler)
|
||||
stProject.bFPIC = true;
|
||||
stProject.includeDirectories = {
|
||||
"../public",
|
||||
"../external/funnystdlib/public",
|
||||
"../external/slang/include",
|
||||
"../external/Vulkan-Headers/include",
|
||||
};
|
||||
@@ -22,7 +26,11 @@ DECLARE_BUILD_STAGE(libshadercompiler)
|
||||
};
|
||||
|
||||
stLinkProject = ccompiler->Compile(&stProject);
|
||||
stLinkProject.linkType = ELINK_STATIC_LIBRARY;
|
||||
stLinkProject.libraryObjects = {
|
||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
||||
};
|
||||
stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")});
|
||||
stLinkProject.linkType = ELINK_DYNAMIC_LIBRARY;
|
||||
szOutput = linker->Link(&stLinkProject);
|
||||
|
||||
ADD_OUTPUT_OBJECT("lib", szOutput);
|
||||
@@ -36,42 +44,45 @@ DECLARE_BUILD_STAGE(shadercompiler)
|
||||
CUtlString szOutput;
|
||||
|
||||
stProject.m_szName = "fsc";
|
||||
stProject.m_target = Target_t::HostTarget();
|
||||
stProject.includeDirectories = {"public"};
|
||||
stProject.includeDirectories = {"../public", "../external/funnystdlib/public"};
|
||||
stProject.files = {
|
||||
"main.cpp",
|
||||
"../materialsystem/compiledshader.cpp",
|
||||
};
|
||||
|
||||
stLinkProject = ccompiler->Compile(&stProject);
|
||||
stLinkProject.linkType = ELINK_EXECUTABLE;
|
||||
stLinkProject.objects.AppendTail((Object_t){tier0_lib});
|
||||
stLinkProject.objects.AppendTail((Object_t){tier1_lib});
|
||||
stLinkProject.objects.AppendTail((Object_t){tier2_lib});
|
||||
stLinkProject.objects.AppendTail((Object_t){shadercompiler_lib});
|
||||
stLinkProject.libraryObjects = {
|
||||
GET_PROJECT_LIBRARY(tier0, "tier0"),
|
||||
};
|
||||
stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier1, "tier1")});
|
||||
stLinkProject.objects.AppendTail({GET_PROJECT_LIBRARY(tier2, "tier2")});
|
||||
stLinkProject.libraries = {"slang-compiler","slang-glslang-2025.24.2"};
|
||||
stLinkProject.libraryDirectories = {"external/linux"};
|
||||
stLinkProject.libraryDirectories = {"../external/linux"};
|
||||
szOutput = linker->Link(&stLinkProject);
|
||||
/*
|
||||
filesystem2->MakeDirectory(CUtlString("%s/bin/tools", szOutputDir.GetString()));
|
||||
filesystem2->CopyFile(CUtlString("%s/bin/tools", szOutputDir.GetString()), szOutput);
|
||||
filesystem2->CopyFile(CUtlString("%s/bin/tools", szOutputDir.GetString()), "external/linux/libslang-compiler.so.0.2025.24.2");
|
||||
filesystem2->CopyFile(CUtlString("%s/bin/tools", szOutputDir.GetString()), "external/linux/libslang-glslang-2025.24.2.so");
|
||||
shadercompiler_exe = CUtlString("%s/bin/tools/fsc", szOutputDir.GetString());
|
||||
*/
|
||||
filesystem2->MakeDirectory(CUtlString("../build/tools"));
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), szOutput);
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(tier0, "tier0"));
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(filesystem_std, "fs"));
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), GET_PROJECT_LIBRARY(libshadercompiler, "lib"));
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), "../external/linux/libslang-compiler.so.0.2025.24.2");
|
||||
filesystem2->CopyFile(CUtlString("../build/tools"), "../external/linux/libslang-glslang-2025.24.2.so");
|
||||
ADD_OUTPUT_OBJECT("compiler", szOutput);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
DECLARE_BUILD_STAGE(compileshaders)
|
||||
{
|
||||
CUtlString szShaderCompiler = "../build/tools/fsc";
|
||||
if (CommandLine()->CheckParam("-nofsc"))
|
||||
return 0;
|
||||
|
||||
CUtlVector<CUtlString> args = {"-i", "funnyassets", "-o", "build/funnygame/assets"};
|
||||
filesystem2->MakeDirectory(CUtlString("../build/funnygame/assets"));
|
||||
CUtlVector<CUtlString> args = {"-i", "../funnyassets", "-o", "../build/funnygame/assets"};
|
||||
|
||||
runner->Run(shadercompiler_exe, args);
|
||||
runner->Run(szShaderCompiler, args);
|
||||
runner->Wait();
|
||||
V_printf("Cool\n");
|
||||
return 0;
|
||||
};
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "tier0/lib.h"
|
||||
#include "tier1/commandline.h"
|
||||
#include "tier0/commandline.h"
|
||||
#include "tier1/appinit.h"
|
||||
#include "tier1/utlstring.h"
|
||||
#include "tier2/ifilesystem.h"
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
static IShaderCompiler *s_pVulkanSpirvCompiler;
|
||||
static const char *s_szGameRoot;
|
||||
ICompiledShaderManager *g_pShaderManager;
|
||||
|
||||
void CompileShader( const char *szShader )
|
||||
{
|
||||
@@ -18,17 +19,16 @@ void CompileShader( const char *szShader )
|
||||
|
||||
s_pVulkanSpirvCompiler->CompileShader(szShader, &shader);
|
||||
|
||||
Plat_MakeDir("build/funnygame/assets", 0755);
|
||||
Plat_MakeDir("build/funnygame/assets/shaders", 0755);
|
||||
Plat_MakeDir("../build/funnygame/assets", 0755);
|
||||
Plat_MakeDir("../build/funnygame/assets/shaders", 0755);
|
||||
|
||||
CUtlString szOutputDirectory = szShader;
|
||||
szOutputDirectory.RemoveHead(strlen(s_szGameRoot)+1);
|
||||
szOutputDirectory.AppendHead("build/funnygame/assets/");
|
||||
szOutputDirectory.AppendHead("../build/funnygame/assets/");
|
||||
szOutputDirectory.AppendTail("_c");
|
||||
printf("%s\n",szOutputDirectory.GetString());
|
||||
|
||||
|
||||
CompiledShaderManager()->WriteToFile(&shader, szOutputDirectory);
|
||||
g_pShaderManager->WriteToFile(&shader, szOutputDirectory);
|
||||
};
|
||||
|
||||
void PrintHelp()
|
||||
@@ -40,11 +40,21 @@ void PrintHelp()
|
||||
int main( int c, char **v )
|
||||
{
|
||||
CUtlString szExePath = Plat_GetExecutablePath();
|
||||
CUtlString szOriginalPath = Plat_GetWorkingDir();
|
||||
|
||||
|
||||
CommandLine()->CreateCommandLine(c, v);
|
||||
|
||||
Plat_SetWorkingDir(szExePath.GetDirectory());
|
||||
CreateInterfaceFn g_pCompilerFactory = Sys_GetFactory("ShaderCompiler");
|
||||
Plat_SetWorkingDir(szOriginalPath);
|
||||
g_pShaderManager = (ICompiledShaderManager*)g_pCompilerFactory(COMPILED_SHADER_MANAGER_INTERFACE_VERSION, NULL);
|
||||
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
filesystem->Init();
|
||||
|
||||
s_pVulkanSpirvCompiler = (IShaderCompiler*)CreateInterface(SLANG_SHADER_COMPILER_SPIRV_VULKAN, NULL);
|
||||
s_pVulkanSpirvCompiler = (IShaderCompiler*)g_pCompilerFactory(SLANG_SHADER_COMPILER_SPIRV_VULKAN, NULL);
|
||||
s_pVulkanSpirvCompiler->Init();
|
||||
|
||||
const char *szInputDirectory = CommandLine()->ParamValue("-i");
|
||||
|
||||
@@ -72,12 +72,19 @@ void CSlangVulkanSpirvShaderCompiler::CompileShader( const char *szInput, CCompi
|
||||
ISession *pSession = NULL;
|
||||
IBlob *pShaderSourceBlob = NULL;
|
||||
|
||||
if (filesystem == NULL)
|
||||
{
|
||||
|
||||
CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std");
|
||||
filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL);
|
||||
filesystem->Init();
|
||||
}
|
||||
IFileHandle *pFile = filesystem->Open(szInput, FILEMODE_READ);
|
||||
const char *szShaderSource = filesystem->ReadString(pFile);
|
||||
|
||||
int i = 0;
|
||||
|
||||
pShaderSourceBlob = slang_createBlob(szShaderSource, pFile->Size());
|
||||
pShaderSourceBlob = slang_createBlob(szShaderSource, filesystem->Size(pFile));
|
||||
filesystem->Close(pFile);
|
||||
|
||||
printf(" SLANG %s\n", szInput);
|
||||
|
||||
Reference in New Issue
Block a user