XaiJu
MacGruber_Laboratory
MacGruber_Laboratory

patreon


Monthly Report: September

Hi! I'm planning to post a report like this near the end of each month, reporting on what I worked on behind the scenes and what the vague plans for the next months are. A lot of my work is very experimental and has not yet produced anything useful. If your only interest is downloading finished things, feel free to skip these reports. However, I like to be straight with my patrons, so you can decide if you want buy-in on the coming month or not. By the way, I'm totally fine with people hoping on and off as they see fit.

Failed Project: Reflection Probes

Two weeks ago I spend some time on getting ReflectionProbes to work. These are a way to fake global illumination. VaM supports this in the sense that you can use the skybox as global illumination. However, especially in indoor scenes the skybox has nothing to do with the actual scene. Shiny materials like plastic, latex or metal can appear very wrong (middle image) and you usually have to make the reflection blurry to make it not look that obviously wrong. What you can do currently in VaM is either turn off global illumination (left image) or choose a skybox from the limited build-in selection that at least kind of matches your environment colors. Also you can bake reflection probes for a static scene in Unity and import the entire scene into VaM. However, in the that case the reflection would only work on other imported stuff (e.g. no characters or clothing) and can only contain the static parts of the Unity scene. It does not contain anything that is movable or was added in VaM. You could not even add major lightsources in VaM. 

What I tried to do is getting runtime reflection probes to work. Theoretically this should be fairly easy, as it is obviously a Unity feature. Just a script that spawns a ReflectionProbe, changes some settings on it and turns on QualitySettings.realtimeReflectionProbes to override Meshed's graphic settings. You could either "bake" the reflection once when loading the scene or keep it updating every frame if your machine is fast enough. Sounds simple, I thought so too, except it does not work. So far I could not figure out what the issue is. The rendered cubemap appears to be just black.

Additionally I tried reverse engineer VaMs skybox system to load a custom skybox into VaM to override the global illumination on persons/clothing that way. For that kind of thing I'm using ILSpy to decompile VaM and look at Meshed's source code. For the sky system, VaM appears to be using Marmoset Skyshop or at least parts of it. However, I could not figure out how to make it do what I wanted by just using the limited VaM scripting capabilities.

In total I spend about 8 hours on this and I'm out of ideas that could make it work.

Ongoing: Post Effects in VR

Another project I have been working on is getting some kind of post processing effects working. Most important to me would be Ambient Occlusion, see images. It does not look like much, but it helps a lot to make a scene feel real. Of course there are other great effects we would like to see in VR: Depth of Field, Color Grading, etc. In simple terms this would be kind of like an less capable Reshade, but it would work in VR, assuming your graphics card does not scream for mercy. Just one or two effects could/should™ be totally doable performance-wise.

The obvious way to do this in Unity is using the PostProcessingStack which is provided by Unity as an add-in package. Normal you would just setup this in the Unity Editor and have it running in your project in about a minute. But it is not intended to be added at runtime, why would any sane person would want that? However, the source code is available so my idea was to load it either as VaM script or as a DLL using the CustomUnityAsset. I spend several evenings this week on this and I have run in various concrete walls during the process, some of which I could break or circumvent. For example the code uses reflection, which is forbidden when loaded in VaM, so I will have to refactor stuff. Also I would have to get creative in getting the shaders and special textures loaded, not to mention in building VaM UI to make it all tweakable at runtime. There is also an older version of the PostProcessingStack available that is less complex, possibly making things easier at the cost of less fancy effects.

I'm not out of ideas to try, yet. I guessing on a 50:50 chance on getting at least Ambient Occlusion working during the next few weeks. Can't promise anything, though, there might be more of these concrete walls I'm not aware of, yet.

Long-term plans: Breathing Script, Locking in VR, Tools

Other than that I have various ideas what could be done. There is the audio-synced breathing script I would like to look into again. And there is VaMConnect that deserves some more attention. A while back I added functionality to control up to two ABox estim devices from VaM. The Abox is controlled through sound, so I'm using the stereo jack on the RasberryPI. In combination with my modded Suck-o-Mat I was able to get an amazing handjob. I'm still following that very old plan of a femdom scene "locking" the player in VR, actually punishing through real E-Stim in case the player does not look into the eyes (or whatever) of the girl, moves his hands or is trying to quit the game before the timer runs out. If you let the Oculus Touch controllers dangle from their straps, you really can't get out without being punished. I have several building blocks for that, that still have to be assembled. Note sure how useful this will be for others, though, as I assume nobody will have the exact same setup. But I'm sure you will be able to use it as a base for your own scene, assuming you have some scripting skills.

I'm not sure how much of this can happen in the coming month, due to obvious real-life limitations. It might take till Christmas or even longer.

Last but not least there are one or two smaller productivity scripts/tools I'm planning on releasing for free. Nothing too fancy.


Cheers, MacGruber 


More Creators