This commit is contained in:
2026-02-24 17:35:26 -08:00
parent 1c3c30e6ce
commit d45c632dcd
28 changed files with 1982 additions and 97 deletions

View File

@ -361,9 +361,14 @@ class Shader:
def write_header(self, s):
self.header += s + '\n'
def write_attrib(self, s):
def write_attrib(self, s, unique=False):
if unique and s in self.main_attribs:
return
self.main_attribs += '\t' + s + '\n'
def has_attrib(self, s):
return s in self.main_attribs
def is_equal(self, sh):
self.vstruct_to_vsin()
return self.ins == sh.ins and \
@ -394,6 +399,25 @@ class Shader:
for e in vs:
self.add_in('vec' + self.data_size(e['data']) + ' ' + e['name'])
def validate(self):
import re
issues = []
# Check for duplicate variable declarations in main_attribs
var_pattern = re.compile(r'\b(vec[234]|float|int|mat[234])\s+(\w+)\s*[;=]')
declared_vars = {}
for line in self.main_attribs.split('\n'):
match = var_pattern.search(line)
if match:
var_type, var_name = match.groups()
if var_name in declared_vars:
issues.append(f"Duplicate variable declaration: '{var_name}' (type: {var_type})")
else:
declared_vars[var_name] = var_type
return issues
def get(self):
if self.noprocessing:
return self.main