Skip to content

Commit f5677e5

Browse files
authored
Fix tex size (#20)
update tex property
1 parent 41adcb9 commit f5677e5

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

material/parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ def f64_material_parse(f3d_mat: "F3DMaterialProperty", always_set: bool, set_lig
438438
elif use_tex0 or use_tex1:
439439
uv_basis = 0 if use_tex0 else 1
440440
if uv_basis is not None:
441-
state.tex_size = tuple(getattr(f3d_mat, f"tex{uv_basis}").get_tex_size())
441+
state.tex_size = tuple(getattr(f3d_mat, f"tex{uv_basis}").tex_size)
442442

443443
if cc_uses["Texture 0"] and cc_uses["Texture 1"]:
444444
state.mip_count = f3d_mat.rdp_settings.num_textures_mipmapped - 1

properties.py

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
def simplified_tex_update(self, context):
2828
from fast64_internal.f3d.f3d_material import setAutoProp
2929

30-
tex_size = self.get_tex_size()
30+
tex_size = self.tex_size
3131
if self.tex is not None and self.autoprop:
3232
setAutoProp(self.S, tex_size[0])
3333
setAutoProp(self.T, tex_size[1])
@@ -84,15 +84,44 @@ class TextureProperty(PropertyGroup):
8484
menu: bpy.props.BoolProperty()
8585
autoprop: bpy.props.BoolProperty(
8686
name="Autoprop",
87-
default=True,
8887
update=simplified_tex_update,
88+
default=True,
8989
)
9090

91-
def get_tex_size(self) -> list[int]:
92-
if self.tex:
93-
return self.tex.size
91+
@property
92+
def is_ci(self):
93+
self.tex_format: str
94+
return self.tex_format.startswith("CI")
95+
96+
@property
97+
def is_set(self):
98+
return self.tex_set and (self.use_tex_reference or self.tex is not None)
99+
100+
@property
101+
def tlut_mode(self):
102+
return f"G_TT_{self.ci_format if self.is_ci else 'NONE'}"
103+
104+
@property
105+
def tex_size(self) -> list[int]:
106+
if self.tex or self.use_tex_reference:
107+
if self.tex is not None:
108+
return list(self.tex.size)
109+
else:
110+
return list(self.tex_reference_size)
94111
return [0, 0]
95112

113+
@property
114+
def word_usage(self):
115+
return getTmemWordUsage(self.tex_format, *self.tex_size)
116+
117+
@property
118+
def format_type(self):
119+
return texFormatOf[self.tex_format][len("G_IM_FMT_") :]
120+
121+
@property
122+
def format_size(self):
123+
return bitSizeDict[texBitSizeF3D[self.tex_format]]
124+
96125
def draw_default_ui(self, layout: bpy.types.UILayout, index: int):
97126
def small_split(layout, prop: str, name: str):
98127
split = layout.split(factor=0.25)

0 commit comments

Comments
 (0)