Yeah, so it looks like it is potentially an issue with “Write to Disk” without clicking the green “Build” button. So I dug in further, myself, and here’s what I found:
PATH 1 (PAGE TO DISK ON, SET TO 2048):
- New Project.
- 2048/2049 Resolution. ← 2K
- Place a Generator device and attach it to a File Output node.
- Open File Output device, set it to PNG (For easy viewing) and pick a location to save to.
- Click “Write to Disk”
- Problem should happen
PATH 2 (PAGE TO DISK ON, SET TO 2048):
- New Project.
- 2048/2049 Resolution. ← 2K
- Place a Generator device and attach it to a File Output node.
- Open File Output device, set it to PNG (For easy viewing) and pick a location to save to.
- Press Green “Build” button.
- No problem should happen.
- Click “Write to Disk”
- No problem should happen.
PATH 3 (PAGE TO DISK ON, SET TO 1024):
- New Project.
-
- 1024/1025 Resolution. ← 1K
- Place a Generator device and attach it to a File Output node.
- Open File Output device, set it to PNG (For easy viewing) and pick a location to save to.
- Click “Write to Disk”
- Problem should happen
PATH 4 (PAGE TO DISK ON, SET TO 1024):
- New Project.
- 1024/1025 Resolution. ← 1K
- Place a Generator device and attach it to a File Output node.
- Open File Output device, set it to PNG (For easy viewing) and pick a location to save to.
- Press Green “Build” button.
- No problem should happen.
- Click “Write to Disk”
- No problem should happen.
PATHS 5-8 (PAGE TO DISK OFF):
- Seems to work fine for all of the above cases.
@Stephen : I would think you are correct with the “Page to Disk”, as this issue seems to impact (Directly) the resolution that is defined as the “Minimum Size” there. Also, @Hotshot seems to be correct with it only happening if you “Write to Disk” without hitting the Green “Build” button first.
If you do not hit the Green “Build” button first, clicking “Write to Disk” kicks off a build. If you do not allow “Paging to Disk”, it would not be writing to the Filesystem (I assume). So with “Page to Disk” on… it is writing to the Filesystem (Also, I assume).
Could it be paging to disk while writing the result? I guess an “Unknown” would be, “Why does it only affect the sizes specified in the Minimum Size”? I also assume it impacts both the Power of Two and the Power of Two Plus One because they share some calculations behind the scenes due to “Similarity”, because UE4 (2017) did not have the issue when “Page to Disk” was set to have a “Minimum Size” of 2048 (Which would make the UE4 one immune, as “Minimum Size” is Power of Two increments).
TL;DR:
- Seems tied to “Page to Disk” being enabled and the “Minimum Size” (And “Minimum Size” + 1) as the targeted resolutions.
- Seems to happen when a Build happens at the same time as “Write to Disk”.
- So clicking the Green “Build” button first mitigates the problem.
- Clicking “Write to Disk” without clicking "the Green “Build” button has the problem.
- This can be reproduced, even after clicking the Green “Build” button by switching project resolution, requiring World Machine to do a new build for the output.
NOTES:
- If you flag the File Output device as “Output file on every build” and hit the Green “Build” button… this issue does NOT come up in the output files. Could it be a “Sequential vs Parallel” situation involving a difference in how:
- Clicking “Write to Disk” while needing to Build first handles the “Build/Write” behavior is handled.
- Clicking the Green “Build” button handles the “Build/Write” behavior is handled.
- This makes me think the Green “Build Button” does things sequentially while the “Write to Disk” button does things in parallel? (Total assumptions here)
I ask, because Parallel Read/Write could have issues when writing data to Disk while Building that same data. This looks like a typical “Reading Data on Thread A while Writing Data on Thread B” data issue. Maybe one holds the lock on the data (Paging to Disk) while the other gets choked out for X amount of time (Writing the actual data to disk, due to reading the data locked by Paging to Disk and, depending on how that is handled, it could default it to 0 or read it as 0 since that “Build Data” would not have been initialized yet?).
- I tried the “Tiled Build” option with tiles set to 2048 and… well… you have to click the Green “Tiled Build” button, so I could not test that (Since that is the “Good Path” and Tiled Builds do not rely on the “Output file on every build” path).
I still find it odd that it does not affect larger resolutions, though. That has me confused. Would it not page to Disk similarly on “Larger than Page to Disk Minimum Size” resolutions as it does that “Minimum Size” resolution?