Update and document shader compilation scripts
Will no longer fail with certain shaderStages Refs #1126
This commit is contained in:
parent
9c25dad12c
commit
196e6a4c6b
3 changed files with 20 additions and 4 deletions
|
|
@ -1,78 +0,0 @@
|
|||
# Copyright 2020 Google LLC
|
||||
# Copyright 2023 Sascha Willems
|
||||
|
||||
import argparse
|
||||
import fileinput
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
parser = argparse.ArgumentParser(description='Compile all .hlsl shaders')
|
||||
parser.add_argument('--dxc', type=str, help='path to DXC executable')
|
||||
args = parser.parse_args()
|
||||
|
||||
def findDXC():
|
||||
def isExe(path):
|
||||
return os.path.isfile(path) and os.access(path, os.X_OK)
|
||||
|
||||
if args.dxc != None and isExe(args.dxc):
|
||||
return args.dxc
|
||||
|
||||
exe_name = "dxc"
|
||||
if os.name == "nt":
|
||||
exe_name += ".exe"
|
||||
|
||||
for exe_dir in os.environ["PATH"].split(os.pathsep):
|
||||
full_path = os.path.join(exe_dir, exe_name)
|
||||
if isExe(full_path):
|
||||
return full_path
|
||||
|
||||
sys.exit("Could not find DXC executable on PATH, and was not specified with --dxc")
|
||||
|
||||
dxc_path = findDXC()
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
dir_path = dir_path.replace('\\', '/')
|
||||
for root, dirs, files in os.walk(dir_path):
|
||||
for file in files:
|
||||
if file.endswith(".vert") or file.endswith(".frag") or file.endswith(".comp") or file.endswith(".geom") or file.endswith(".tesc") or file.endswith(".tese") or file.endswith(".rgen") or file.endswith(".rchit") or file.endswith(".rmiss") or file.endswith(".mesh") :
|
||||
hlsl_file = os.path.join(root, file)
|
||||
spv_out = hlsl_file + ".spv"
|
||||
|
||||
target = ''
|
||||
profile = ''
|
||||
if(hlsl_file.find('.vert') != -1):
|
||||
profile = 'vs_6_1'
|
||||
elif(hlsl_file.find('.frag') != -1):
|
||||
profile = 'ps_6_4'
|
||||
elif(hlsl_file.find('.comp') != -1):
|
||||
profile = 'cs_6_1'
|
||||
elif(hlsl_file.find('.geom') != -1):
|
||||
profile = 'gs_6_1'
|
||||
elif(hlsl_file.find('.tesc') != -1):
|
||||
profile = 'hs_6_1'
|
||||
elif(hlsl_file.find('.tese') != -1):
|
||||
profile = 'ds_6_1'
|
||||
elif(hlsl_file.find('.rgen') != -1 or
|
||||
hlsl_file.find('.rchit') != -1 or
|
||||
hlsl_file.find('.rmiss') != -1):
|
||||
target='-fspv-target-env=vulkan1.2'
|
||||
profile = 'lib_6_3'
|
||||
elif(hlsl_file.find('.mesh') != -1):
|
||||
target='-fspv-target-env=vulkan1.2'
|
||||
profile = 'ms_6_6'
|
||||
|
||||
print('Compiling %s' % (hlsl_file))
|
||||
subprocess.check_output([
|
||||
dxc_path,
|
||||
'-spirv',
|
||||
'-T', profile,
|
||||
'-E', 'main',
|
||||
'-fspv-extension=SPV_KHR_ray_tracing',
|
||||
'-fspv-extension=SPV_KHR_multiview',
|
||||
'-fspv-extension=SPV_KHR_shader_draw_parameters',
|
||||
'-fspv-extension=SPV_EXT_descriptor_indexing',
|
||||
'-fspv-extension=SPV_KHR_ray_query',
|
||||
'-fspv-extension=SPV_KHR_fragment_shading_rate',
|
||||
target,
|
||||
hlsl_file,
|
||||
'-Fo', spv_out])
|
||||
Loading…
Add table
Add a link
Reference in a new issue