mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Extract command line #defines to fxc, roll them in when editing shaders
This commit is contained in:
@@ -1554,6 +1554,51 @@ SPDBChunk::SPDBChunk(void *chunk, uint32_t firstInstructionOffset)
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(!strcmp(key, "hlslDefines"))
|
||||
{
|
||||
string cmdlineDefines = "// Command line defines:\n\n";
|
||||
|
||||
char *c = value;
|
||||
|
||||
while(*c)
|
||||
{
|
||||
// skip whitespace
|
||||
while(*c && (*c == ' ' || *c == '\t' || *c == '\n'))
|
||||
c++;
|
||||
|
||||
if(*c == 0) break;
|
||||
|
||||
// start of a definition
|
||||
if(c[0] == '/' && c[1] == 'D')
|
||||
{
|
||||
c += 2;
|
||||
// skip whitespace
|
||||
while(*c && (*c == ' ' || *c == '\t' || *c == '\n')) c++;
|
||||
|
||||
if(*c == 0) break;
|
||||
|
||||
char *defstart = c;
|
||||
char *defend = strchr(c, '=');
|
||||
|
||||
if(defend == 0) break;
|
||||
|
||||
c = defend+1;
|
||||
|
||||
char *valstart = c;
|
||||
|
||||
// skip to end or next whitespace
|
||||
while(*c && *c != ' ' && *c != '\t' && *c != '\n') c++;
|
||||
|
||||
char *valend = c;
|
||||
|
||||
cmdlineDefines += "#define ";
|
||||
cmdlineDefines += string(defstart, defend) + " " + string(valstart, valend);
|
||||
cmdlineDefines += "\n";
|
||||
}
|
||||
}
|
||||
|
||||
Files.push_back(make_pair("@cmdline", cmdlineDefines));
|
||||
}
|
||||
|
||||
key = value + strlen(value) + 1;
|
||||
}
|
||||
|
||||
@@ -1962,6 +1962,9 @@ namespace renderdocui.Windows.PipelineState
|
||||
offs = compileSource.IndexOf("#include");
|
||||
}
|
||||
|
||||
if (updatedfiles.ContainsKey("@cmdline"))
|
||||
compileSource = updatedfiles["@cmdline"] + "\n\n" + compileSource;
|
||||
|
||||
// invoke off to the ReplayRenderer to replace the log's shader
|
||||
// with our edited one
|
||||
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
|
||||
|
||||
Reference in New Issue
Block a user