Source Filmmaker

Source Filmmaker

45 ratings
[Beta] SFM MultiRender: Multicore Rendering
By an0nymooose
Potentially 4-5x your render speed by using some neat tricks and a new program I created
2
   
Award
Favorite
Favorited
Unfavorite
SFM Multi-Render
A simple but hacky way to speed up SFM's render time by 4-5x
This program splits your project up into multiple SFM sessions/processes, giving us a "multi-core" rendering experience from a single-core limited program.
Your PC should be decent enough if you plan on running 4-6+ copies, but I imagine lower end PCs may benefit from 2-3.

**This will only work if you have enough VRAM, RAM, and CPU power to render multiple copies of your project.**
If you have 10gb VRAM, and rendering one session only uses 2gb, this will work.
If you have 10gb VRAM, and rendering one session uses > 5gb, this will not work.

For the love of God, please read and view all the instructions first, then post questions if you are having issues.
Instructions
You likely need to run this program as administrator (more info in the notes section)

MultiRender Instructions/Github[github.com]
MultiRender Download HERE[github.com]

You will need .NET framework 4.8 Runtime[dotnet.microsoft.com] if you don't already have it.

  • 1. Patch your launcher to enable multirun here.

  • 2. Set the launch options via the "SFM Launch Options" button[github.com], just copy your launch options set already in Steam.

  • 3. Create the amount of sessions you desire via the blue + button.

  • 4. Fill out Session 1's project file .dmx and output directory+image name (quotes or no quotes, doesnt matter)
    Click "All use Session 1 Path" button to duplicate it to all other sessions.

  • 6. In the duplication area, fill out the Start and End range. If I want to render frame 0-3000, type in 0 for start, then 3000 for end. Click Distribute All Frames to evenly spread the frames between the sessions.

  • 7. Optionally click the "Auto-hide SFM sessions", this will minimize every render window once it starts (Fake minimize, it moves it off screen).

  • 8. Launch your sessions. You can observe the progress all from the main window without needing to check SFM.

Notes
  • This is in beta, I have not extensively tested this on a large amounts of projects. Again, if your project is massive and you blasted your settings with stuff like shadowmapres 8192, this program cant do much for you since your VRAM might be maxed.

  • The frame between sessions will produce a ghost frame most of the time. This is just SFM being SFM. Go back into SFM and just re-render that frame, and replace it in your output folder.

  • You can choose to manually assign each session to a different core, or let the Winows OS Scheduler automatically handle it, via the "Sequentially distribute cores" option in the settings. Which is faster? I don't know yet (let me know if anyone does a comparsion please)

  • If you use the DXVK .dll for SFM and have issues, try disabling it, it may save you some VRAM.
    I'm able to render 4k projects with DXVK however (6 sessions 90% max my VRAM)

  • If you use custom layouts and not "default/layout 1" in SFM, the autohide option will work, but it wont restore your SFM window position on re-launch. If your SFM is invisible, click it on the taskbar and press ALT+Space, then maximize.

    The auto-hide option modifies a registry key Computer\HKEY_CURRENT_USER\SOFTWARE\Valve\SourceFilmmaker\Layouts_9\1\WindowPercentageGeometry
    This key is set by SFM every time is closes. So in our case, we "minimize" by hiding off screen, it will save that position, which we dont want (we fake minimize because actual minimizing messes up the render).
    The key is backed up, and restored every time you shut the program down or a render batch ends. In the odd event it didnt work, and you launch SFM normally and it is invisible, go to the Multi-Render settings via the gear, and click the button "Reset SFM window postion registry to default".

  • We need to run as admin to avoid issues spawning/closing processes, as well as avoid issues reading SFM's memory (We read the memory to get the layoff % complete number). You can try to run normally, but I can't say for sure it will work.
Known issues
  • Splitting up the render causes "ghost frames" at the beginning of each frame range (issue stemming from SFM, not this program). So splitting a render into 5 sessions, you'll get 5 ghost frames. You can resolve this by just going into sfm and re-rendering those few frames.
20 Comments
Link Freeman 12 Jul @ 10:52pm 
@Ball24 maybe because its not the whole point?
THE (fa)GOAT 5 Jul @ 3:10pm 
#NEVERBLEND
Balls24 5 Jul @ 7:46am 
people will do anything but switch to blender and its beautiful
hotpockette 1 Jul @ 5:48am 
this is some wizard shit. very awesome :love_seagull:
DaMangaFred 23 Jun @ 2:57am 
2. Set the launch options via the "SFM Launch Options" button[ github.com ], just copy your launch options set already in Steam. this one
DaMangaFred 23 Jun @ 2:56am 
i didnt understand the 2nd point
FilmAFrame 21 Jun @ 7:29am 
What GPU did you use for this? Also, your guide is awesome. It really helped me with a lot of stuff :)
Thallidus 21 Jun @ 6:21am 
This is pretty cool. I'm probably not gonna use it since i don't render stuff that long but I'll give u credit where credit is due
LeBron James 18 Jun @ 11:09am 
Awesome work here man, sorry that a bunch of the people below don't understand lmao.
Taylor Swift 2 Jun @ 2:17pm 
tried it out, blue screened my computer. running 12th gen i5 and 4080 super. 4 sessions. 4092 shadowmap res.

i also noticed that when I run it it gives me that message that says that the render res is different from the window res. maybe thats part of the issue?

also im assuming it renders at the projects settings res and sample count wise?

thanks for this addon the concept is amazing and its always fantastic when people push the limits of sfm further