Skip to content

Instantly share code, notes, and snippets.

@patriciogonzalezvivo
Last active January 14, 2024 23:38
Show Gist options
  • Save patriciogonzalezvivo/9a50569c2ef9b08058706443a39d838e to your computer and use it in GitHub Desktop.
Save patriciogonzalezvivo/9a50569c2ef9b08058706443a39d838e to your computer and use it in GitHub Desktop.
Resolve includes for GLSL, HLSL and metal on Python
import re
from os.path import join, abspath, dirname, basename
def load_source( folder: str, filename: str, dependencies = []):
path = abspath( join(folder, filename) )
if path in dependencies:
return ""
else:
dependencies.append( path )
source = ""
lines = open( path ).readlines()
for line in lines:
if match := re.search(r'#include\s*["|<](.*.[glsl|hlsl|metal])["|>]' ,line, re.IGNORECASE):
new_folder = join(folder, dirname( match.group(1) ))
new_dep = basename( match.group(1) )
source += load_source(new_folder, new_dep, dependencies)
else:
source += line
return source
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment