@@ -122,7 +122,8 @@ private:
|
||||
DebugServer* mServer;
|
||||
};
|
||||
|
||||
DebugServer::DebugServer(Backend backend, int port) : mBackend(backend) {
|
||||
DebugServer::DebugServer(Backend backend, ShaderLanguage shaderLanguage, int port)
|
||||
: mBackend(backend), mShaderLanguage(shaderLanguage) {
|
||||
|
||||
#if !SERVE_FROM_SOURCE_TREE
|
||||
ASSET_MAP["/index.html"] = {
|
||||
@@ -254,47 +255,23 @@ bool DebugServer::handleEditCommand(const MaterialKey& key, backend::Backend api
|
||||
return error(__LINE__);
|
||||
}
|
||||
|
||||
FixedCapacityVector<ShaderInfo> infos;
|
||||
size_t shaderCount;
|
||||
switch (api) {
|
||||
case backend::Backend::OPENGL: {
|
||||
shaderCount = getShaderCount(package, ChunkType::MaterialGlsl);
|
||||
infos.reserve(shaderCount);
|
||||
infos.resize(shaderCount);
|
||||
if (!getShaderInfo(package, infos.data(), ChunkType::MaterialGlsl)) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case backend::Backend::VULKAN: {
|
||||
shaderCount = getShaderCount(package, ChunkType::MaterialSpirv);
|
||||
infos.reserve(shaderCount);
|
||||
infos.resize(shaderCount);
|
||||
if (!getShaderInfo(package, infos.data(), ChunkType::MaterialSpirv)) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case backend::Backend::METAL: {
|
||||
shaderCount = getShaderCount(package, ChunkType::MaterialMetal);
|
||||
infos.reserve(shaderCount);
|
||||
infos.resize(shaderCount);
|
||||
if (!getShaderInfo(package, infos.data(), ChunkType::MaterialMetal)) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
error(__LINE__);
|
||||
}
|
||||
ShaderReplacer editor(api, mShaderLanguage, package.getData(), package.getSize());
|
||||
|
||||
size_t shaderCount = getShaderCount(package, editor.getMaterialTag());
|
||||
if (shaderIndex < 0 || shaderIndex >= shaderCount) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
|
||||
FixedCapacityVector<ShaderInfo> infos;
|
||||
infos.reserve(shaderCount);
|
||||
infos.resize(shaderCount);
|
||||
if (!getShaderInfo(package, infos.data(), editor.getMaterialTag())) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
|
||||
const ShaderInfo info = infos[shaderIndex];
|
||||
ShaderReplacer editor(api, package.getData(), package.getSize());
|
||||
if (!editor.replaceShaderSource(info.shaderModel, info.variant, info.pipelineStage, source, size)) {
|
||||
if (!editor.replaceShaderSource(info.shaderModel, info.variant, info.pipelineStage, source,
|
||||
size)) {
|
||||
return error(__LINE__);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user