Skip to content

Conversation

@Lilaa3
Copy link
Collaborator

@Lilaa3 Lilaa3 commented Apr 18, 2025

This would allow fast64 to have 0 binary blobs (outside images anyways).

  1. No more binary blobs
  2. Real diff when making updates to the nodes
  3. The hashing system, which means that if this was merged there would never be another f3d mat version (not for nodes anyways)
  4. Repeated reloads on changing files causing load times to spike no longer happen
  5. Hopefully no more need to boot into a specific version to work on the nodes.

@Lilaa3 Lilaa3 added enhancement New feature or request codebase Code maintenance/cleanup f3d Has to do with the "f3d" code common to all games labels Apr 18, 2025
Copy link
Contributor

@Dragorn421 Dragorn421 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks very interesting!
I'm surprised this is faster than a library blend, how did you time that?

@Lilaa3
Copy link
Collaborator Author

Lilaa3 commented May 30, 2025

@Dragorn421 At least with my latest commit and in blender 4.1 oot level imports go by quickly (tho i didnt time it but i vaguely know how long main takes)
(That said existing blend updates still feel slower than they should be realistically (recreate shader nodes is significantly faster??))

@Lilaa3
Copy link
Collaborator Author

Lilaa3 commented May 30, 2025

I figured out a way to boost performance, and its literally deleting the existing node group if we are gonna update materials anyways lol

@Dragorn421
Copy link
Contributor

Timings for importing OoT's deku tree map:
on main: 30-40 seconds
this PR: 50-60 seconds

much better! wouldn't be a blocker for merging, but doesn't really back "it's faster"

@Lilaa3
Copy link
Collaborator Author

Lilaa3 commented May 30, 2025

Timings for importing OoT's deku tree map: on main: 30-40 seconds this PR: 50-60 seconds

much better! wouldn't be a blocker for merging, but doesn't really back "it's faster"

uh, still? guess I'll take it, material creation FEELS faster tho, maybe I just imagined it

@Dragorn421
Copy link
Contributor

Timing the "create f3d mat" operator (ignoring the first time clicking the button):
on main: 0.5 seconds
this PR: 0.9 seconds

@Dragorn421
Copy link
Contributor

methodology:

  1. apply this patch:
diff --git a/fast64_internal/f3d/f3d_material.py b/fast64_internal/f3d/f3d_material.py
index 56e6113b..7db70178 100644
--- a/fast64_internal/f3d/f3d_material.py
+++ b/fast64_internal/f3d/f3d_material.py
@@ -2625,8 +2625,16 @@ class CreateFast3DMaterial(Operator):
         if obj is None:
             self.report({"ERROR"}, "No active object selected.")
         else:
+
+            import time
+            start = time.time()
+
             preset = getDefaultMaterialPreset("Shaded Solid")
             createF3DMat(obj, preset)
+            end = time.time()
+
+            print("mat create time (s):", end-start)
+
             self.report({"INFO"}, "Created new Fast3D material.")
         return {"FINISHED"}
 
  1. open blender
  2. create mesh object
  3. click "create fast3d material" and ignore time for that first click
  4. click "create fast3d material" a bunch of times and draw a number from that

Lilaa3 added 3 commits July 30, 2025 17:02
Keeps track of actual name, finally respecting any attempts at a user using the same names.
Remove unused fast64 node groups.
Add "(Fast64)" to node group names
@jesusyoshi54
Copy link
Collaborator

jesusyoshi54 commented Aug 15, 2025

Anecdotally, this feels a lot faster on 4.5 (ignore previous statement I am dumb)
Works for me.

Copy link
Collaborator

@jesusyoshi54 jesusyoshi54 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll leave it up to someone OOT to merge based on their feelings of the value of speed

@Lilaa3
Copy link
Collaborator Author

Lilaa3 commented Aug 16, 2025

I'll leave it up to someone OOT to merge based on their feelings of the value of speed

Dragorn felt it wasn´t worth it, so we shouldn´t merge unless everyone agrees. I like it for streamlined upgrades, the real diff and letting you make changes in any version. Dragorn dislikes it because the speed is either equal to or slower.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codebase Code maintenance/cleanup enhancement New feature or request f3d Has to do with the "f3d" code common to all games

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants