Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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