• Hi Guest!

    Please be aware that we have released another critical security patch for VaM. We strongly recommend updating to version 1.22.0.12 using the VaM_Updater found in your installation folder.

    Details about the security patch can be found here.
DildoLanguage

Assets + Accessories DildoLanguage

Status
Version change awaiting approval before being displayed publicly.
First tech update of the Fluids module.

Shared Fluids Renderer​

If a scene has multiple instances of the DildoLanguage plugin, they will communicate with each other and decide on one plugin instance that is responsible for the post-processing and compositing aspect of fluids.

For scenes with one dildo emitting fluids, there should be no difference.

Scenes with multiple dildos should:
  • Consume less GPU memory
  • Perform faster
  • If the fluids emitted from different dildos overlap, the visuals will be slightly different. Instead of overlapping on top of each other in random order, they will now mix together since they are all rendered in one post-processing pass.
The video below shows the difference. With each dildo rendering the whole effect on its own, the green fluid overlaps the blue one. It can be quite random which one ends up on top. With rendering shared, the two fluids mix together.


Details for Nerds​

The fluid rendering consists of two major parts:
  1. First the various properties of the particles are rendered into off-screen buffers
  2. Then the buffers are processed and composited on top of the scene
In the initial release, each dildo performed both steps on its own. Each dildo allocated its own render target textures. Each rendered the fluid particles into those textures. Then, for each camera, every dildo processed the data and composited the result into the main scene, overlapping the previously composited fluids.

With this change, only one dildo will be elected as the compositor. Only this dildo will allocate the render target textures, saving GPU memory. All dildos will render into the same textures. Then the compositor dildo will post-process the results and draw them onto the screen. The post-processing can be quite expensive, so this should speed up the rendering, although it might not really be noticeable on modern GPUs.

Additional changes​

  • Added Edge Thickness Factor to Cumstain settings. At zero value (default), it will behave as before, and the Thickness (alpha, more or less) of a cumstain will fade from the middle to the edge. At one, the Thickness will stay constant, making the outline of the cumstains more defined.
  • Updated all presets (except for the water one) to use slightly above-zero Edge Thickness Factor, the cumstains look a bit better that way. If you used the presets, reload them or experiment with the value on your own.
  • Added Advanced tab to Fluids settings. It can be safely ignored, it's useful mostly for testing and debugging. You can see which dildo is responsible for compositing the fluids, or disable sharing of the renderer for this dildo.
  • Fixed bug where the fluid render texture resolution would not get updated when the camera's resolution changed.

Fluids​

Added new module to DildoLanguage - Fluids.



The first version of the fluids system includes:
  • Configurable dual particle system with custom emitter, used to simulate orgasm
  • Procedural cumstain generator
  • Custom fluids renderer, using by the spray/stream particles and the generated cumstains
The demo scene includes a short demonstration of the feature, but does not yet contain more in-depth explanation. For now a short introduction/documentation is included in this update.

The fluids module uses the standard DildoLanguage preset system and comes with several demo presets. Just Load them as usual to and check how they are set up. There is a lot of parameters to tweak (and way more internal but not published in the UI). But most of them should be quite easy to understand.

Documentation​

Orgasm Tab​

Configure the overall behavior of dildo's orgasm here. To test it, press the Test Orgasm button.

Each orgasm consists of one or more Bursts. Each burst consumes certain amount of Load. The effect ends when the dildo runs out of Load to Burst.

Some of the parameters are:
  • Load: the overall amount of cum that will be emitted from the dildo.
  • Randomness: how much the actual values will be randomized. Set to 0 to use them exactly as is.
  • Burst Length: duration in seconds, this is also how much of Load the burst will consume.
  • Pause Length: duration between bursts.
  • Burst Velocity: velocity of emitted particles.
  • Particle Rate: amount of emitted particles.
  • Decay sliders: ratio to which the value will decay over the burst. Set to 0 for full decay to zero, set to 1 for now decay over time.

Spray and Stream Particle Systems​

Each burst emits particles in two particle systems:
  • Stream: the main system of elongated drop-shaped particles, usually with lower Spread Angle. When particles from this system collider with anything, they disappear and the collision point is used to generate the procedural cumstains.
  • Spray: supporting particle system, usually containing more particles, less elongated, with higher Spread Angle. These bounce and slide off collisions and disappear after a while.
The Spray-Stream Ratio controls how many particles will be generated in each particle system. At 0, only Spray particles will be generated (and therefore no cumstains). At 1, only Stream particles will be generated.

Shape​

Both kinds of particles are not simple billboards but elongated shapes. Later processed by the fluid renderer, so the exact shape will be apparent only if the particle ends up all alone with nothing else to form the final fluid shape.
  • Particle Stretch (constant): how much stretched the particle is, in the direction of its movement. Constant stretch value. At 1, the particle will be spherical (if the value below is zero). If lower than 1, it will be actually shorter in the direction of movement.
  • Particle Stretch (scaled by velocity): Additional stretch, scaled by the movement speed. Not applied if 0.
  • Particle Slimming: Makes the particles more narrow as they speed up. Not applied if 0.
  • Capsule shape: while the Spray particles are oval, the Stream particles are shaped more like a capsule. The Roundness makes it a bit more "fat" on the sides (at 0 the shape will be a standard capsule). Drop shape makes it more narrow at its end.

Material​

The rest of the parameters control the material. Some of them are automatically interpolated over the particle's life, with the left values representing the material when the particle is born, and the right values the material just before the particle disappears.

Some of the more non-obvious material parameters are:
  • Specular reflections are controlled by Specular Strength, Shininess and Reflectivness. The first two values control specular highlights from a fixed directional light, with Strength adjusting the overall value of the white specular highlights, and higher Shininess making them more localized. On the other hand, Reflectivness controls the amount of reflected gobal illum sky cubemap, configured in VAM's Scene Lighting.
  • Transparency is configured by Thickness and Transmission. Thickness controls is basically the usual alpha transparency, it defines how much of the particle's material parameters is accumulated for the fluid rendering pass. Transmission sets how see-through the particle's material is ; the Transmission refracts the image behind it, controlled by the Refraction Strength. Transmission is also tinted by the Color.
  • Fresnel controls how reflections and transmission are mixed. Higher values will make the parts facing the camera only Transmissive, with only the edges of the particles being Reflective. The usual stuff.

Cumstains​

When Stream particles collide with anything, these contact points are recorded and then later processed to generate procedural cumstains. Collisions with person atoms are adjusted to place the cumstains directly onto the skin (since person colliders are not very precise), all other kinds of atoms place cumstains on the colliders directly.

This processing happens usually once per burst, but will be done more often if a burst has longer duration. Since especially the person-skin-processing if quite CPU intensive, it's performed on a background thread and the cumstains appear only once it's done.

To simplify the algorithm a bit, the contact points are processed in a specific direction, and consecutive series of contacts within certain angle are connected by a curve. This is repeated until all contact points are processed, or Generator Loops times maximum. The generated curves consist of small capsule particles, not longer than Segment Length. With the beginning of each curve using the standard over-lifetime Size, randomized by Size Randomness. While the end is scaled down according to Cumstain End Narrow ; set it to 1 for no narrowing over the curve's length.

The rest of the parameters is pretty much the same as for the spray/stream particles, with more of them being configurable over the cumstains life-time. The additional Height parameter controls how much the cumstain sticks outside of the surface it's attached to.

Triggers​

The Fluids module exposes several Storables which can be used from triggers. Their name start with "fluids:".
  • fluids:startOrgasm: action to start the configured orgasm, same as the Test Orgasm button.
  • fluids:startEndless: similar action, but does not consume any of the Load. Therefore it goes on forever.
  • fluids:burst: starts one burst and then stops
  • fluids:burstNoPhysics: same as above, but behaves as if Force Applied to the Tip was set to zero
  • fluids:stop: stops any of the above
  • fluids:cleanCumstains: removes all cumstains generated by this dildo

Gotchas​

  • The whole fluids effect is a screenspace postprocessing effect loosely based on the NVIDIA's "Screen Space Fluid Rendering for Games" paper. Overall, it's way more efficient than trying to construct fluid geometry from particles in each frame. However, it does not play very nice with transparency in the scenes. It will generally appear in front of any CUA transparent objects. There is really nothing that can be done about this.
  • Extra care was taken to make the fluids effect work in mirrors, the shading is not exactly correct because of the way the projection matrix is set up. It's usually not noticable.
  • While the cumstains are placed on a person atom's skin exactly, they still attach to nearest collider for movement purposes. Overall the effect will look great on stationery or not-much moving subjects. But large movements or big pose changes can make it look quite bad in some cases. There are some plans to improve this in the future, stay tuned.
  • The Unity's particle emitter is shite for tiny emitters. This problem is mostly fixed in modern versions of Unity, but in 2018 it's bad. Therefore the particles are all emitted manually from the plugin's custom code. This can unfortunately be quite slow, so I'd not recommend incrementing the Particle Rate too much.

Other Changes​

Not much to write here, I've been fully focused on implementing the fluids (and other experimental stuff that's not yet ready for release).
  • Added Help tab with a short overview of most important features
  • Integrated Fluids presets into Master Presets
  • A handful of smaller fixes

Shape​

Added Bend & Twist shape customization.

Movement​

  • Split Motion Period and Forces into separate tabs
  • Option to apply different Amplitude force while not penetrating
  • Ability to override VAM's Hold Position Spring
  • Added new Direction tab:
    • Customize push direction vector
    • Option to automatically adjust the direction vector towards target orifice
    • Smart Forces
      • When not penetrating, guides the tip towards the target
      • When penetrating, applies forces to the penetrating segments to keep them on target
      • Useful especially for bent dildos, either to animate them, or just to make setting up a pose with them easier
    • Automatic or Manual target selection

  • Added new Morphs tab:
    • Option to interpolate from current Shape to another
    • Driven by the same Motion Period as the Forces, so the shape changes are automatically synchronized with the motion, if both are enabled

Preset System​

  • Copy/paste uses the system clipboard, making it easier to copy settings from one dildo atom to another
  • Pasting a preset over a default-named one will paste the name as well
  • Renaming a preset automatically makes the new name unique if it clashes with another preset (applies on load and paste too)
  • Added Reset to Defaults button to reset current preset (it will copy it to clipboard for a simple undo)
  • Bumped the max amount of presets to 50 (99 for master presets)

Demo Scene​

  • Added a short demonstration of bending and shape morphing to the Shape section
  • Large changes to the Movement section:
    • Existing pages updated to reflect the UI changes
    • Added custom direction demonstration
    • Many additions to the practical demo part at the end, showcasing the new features, including a visual smart force explanation
  • Simple idle movement system to make the scene more lively
Back
Top Bottom