– Song is "Singa" by Topaz
This video took 250+ hours of total recording time (~20 hours for the final rendering), almost one year to produce, and years of ᴇsᴏᴛᴇʀɪᴄ knowledge of a variety of Minecraft mods, especially the GLSL Shaders Mod.
Please share this vid or somethin, it's cool when lots of people enjoy them.
–– Downloads ––
Video downloads are available in 1080p, 1440p, or 2160p (4K), and in either 60, 90 or 144 FPS. 144 FPS downloads are only available on Mega:
Project files, including world save:
–– Details [ ᴡᴀʀɴɪɴɢ: ᴅ ᴇ ᴇ ᴘ ! ] ––
- Recorded with Minema at 3840x2160, 90 FPS
- Recorded on Minecraft 1.7.10, as it is the last Minecraft version with Minema's chunk preloading feature
- Terrain generated on Minecraft 1.2.5 with a retro terrain mod called "Generator Ports"
- Track was put together using MCEdit and WorldEdit Wrapper
- Shaderpack was built off SEUS v10.2 preview
- Macros and Keybinds Mod was used to automate the recording setup
- Sony Vegas was used for general editing while setting up the track
- After Effects was used for final arrangements and rendering
- Encoded with FFmpeg
The rest of these details are mostly things I want to remind myself of later. Very technical, will not hold your hand but I will try to answer any questions if you ask in the comments.
"Frustum Culling" (the culling of chunks from the GPU renderer if they are outside the field-of-view) had to be disabled. This is because large-scale terrain deformations I do in this video make culled chunks visible to the player. I disabled frustum culling by editing the Mineshot and Minema source code (thanks to BarracudaATA for making them open source and easy to compile). Disabling frustum culling takes an insane amount of VRAM, this prompted me to upgrade from a 780 Ti to a 980 Ti.
While playing around in the Minema source code, I managed to get chunk preloading to work with Optifine (the two are normally incompatible). This means I could have potentially recorded at far+ view distances with chunk preloading. However, I chose not to do this because I was already using nearly 6 GB of VRAM with a regular far view distance.
The "Non-Euclidean Terrain Transitions", require that frustum culling is disabled, and chunk preloading is enabled. The transitions work by having both terrain models within in the player's view distance (in the world they are placed side-by-side), merging the terrains into the same position in a vertex shader, and then deciding which terrain is visible inside a fragment shader by constructing a second pseudo-frustum out of the cobblestone gateways. Because 2 terrain models are loaded within a single view-distance, the size of the terrain models must shrink to fit inside the view-distance. I covered this up by having the fog reduce the visibility distance whenever the player is near a transition. The terrain endpoints were stretched in the shadow-map to keep them contiguous.
For every Acid Interstate video, I sync things by recording a copy of the video with the coordinates open. I use this copy of the video as a coordinate reference. For this video I created a beatmap, and then used the coordinate reference to find the coordinates of torch-outposts and endpoints for terrain animations.
The terrain animations were controlled by the player's world space x coordinate. This works out because the player's camera path consists of straight linear movement towards x+ (the ascent at the beginning of the video is controlled by a vertex shader displacement). This was done because neither of the GLSL Mod's time variables (worldTime and frameTimeCounter) can be consistently synchronized between recordings.
I ripped out the default day-night cycle and implemented my own inside the shaderpack. Doing this allowed me to adjust the length of the day to better fit with the song. This also allowed me to skip the nighttime because it didn't really fit.
The video recording was split into 6 segments, each covering about 2,000 blocks. The segments were then combined in my editing software. I split the recording because Optifine does some sort of model-space refresh every ~4,000 blocks, and sometimes chunk preloading stops functioning after the refresh. Splitting the segments up into smaller chunks also allows for less recording commitment, and helps flush memory bottlenecks, however it exasperates issues if recordings are not perfectly synchronized. Splitting recordings also means I'll have to deal with 36 video files for the VR cubemap.
–– M E ––
Twitter : https://twitter.com/BruceKnowsHow
last.fm : http://www.last.fm/user/BruceKnowsHow
GitHub : https://github.com/BruceKnowsHow
Random Behind the Scenes Stuff:
𝒮𝑒𝑒 𝓎𝑜𝓊 𝒾𝓃 𝒢𝑒𝓃𝓈𝑜𝓀𝓎𝑜