Files
mirage_slang/compiler_cmd.py
2025-06-10 17:21:36 +08:00

45 lines
1.1 KiB
Python

#!/usr/bin/env python3
"""
SDL3_GPU Slang Compiler - Command Generation
"""
from global_vars import global_vars
from shader_types import TargetFormat, ShaderStage
from slangc_finder import slangc_path
def make_cmd(source_file: str, target: TargetFormat, stage: ShaderStage, entry_point: str, output_path: str):
"""生成编译命令"""
target_flag = {
TargetFormat.SPIRV: 'spirv',
TargetFormat.DXIL: 'dxil',
TargetFormat.DXBC: 'dxbc',
TargetFormat.MSL: 'metal'
}[target]
stage_flag = {
ShaderStage.VERTEX: 'vertex',
ShaderStage.FRAGMENT: 'fragment',
ShaderStage.COMPUTE: 'compute'
}[stage]
cmd = [
slangc_path,
source_file,
'-no-mangle',
'-entry', entry_point,
'-o', output_path,
'-target', target_flag,
'-stage', stage_flag,
]
# 添加包含路径
for include_path in global_vars.include_dirs:
cmd.extend(['-I', include_path])
if target == TargetFormat.DXIL:
cmd.extend(['-profile', 'sm_6_0'])
elif target == TargetFormat.DXBC:
cmd.extend(['-profile', 'sm_5_1'])
return cmd