Ist eine dynamische Shader-Übersetzung möglich?

346
Bega Bype

Ich weiß, dass es dynamische binäre Übersetzungen / JITs gibt, aber was ist mit dynamischen Shader-Übersetzern?

Ich schreibe einen Emulator für ein System, das einen speziellen, benutzerdefinierten Grafikprozessor verwendet, aber ich möchte den Shader-Code in der Software ein wenig nachahmen (keine HW-Beschleunigung). Dann möchte ich den Shader-Code so umstrukturieren, dass er an die reale Pipeline für die Ziel-GPU angepasst wird, um ihn dadurch dynamisch zu beschleunigen.

Ist das möglich? Ich würde es gerne so machen, wie JIT Programme beschleunigen kann, die vor der endgültigen Ausführung übersetzt werden müssen, jedoch mit der HW-beschleunigten Pipeline (z. B. DX / OpenGL mit Shader).

1
Nicht sicher, was Sie meinen, aber OpenGL kompiliert GLSL-Code "on the fly" beim Treiber. In dieser Hinsicht handelt es sich dabei um einen JIT-Compiler. OpenGL hat normalerweise überhaupt keine GLSL-Interpreter. DX - ich habe verstanden - macht die Kompilierung zur Kompilierzeit. Sie können Zwischensprachen verwenden, die in GLSL übersetzt und dann in einen Shader übersetzt werden, oder jedes andere System, das GLSL-Quellen zur Laufzeit erstellen kann, damit GPU die Arbeit für Sie erledigen kann. MaKo vor 8 Jahren 0

0 Antworten auf die Frage