PKFxSettings V3

From PopcornFX
Revision as of 10:23, 20 July 2018 by PBaron (talk | contribs) (Vertex buffer size multiplicator)
Jump to navigation Jump to search

UnityPopcornFXSettings V3.png

Asset used to choose the settings for the PopcornFX plugin. It's located by default at Assets/PopcornFX/Resources/PKFxSettings but can be in any Resources folder.
You can also access it with the menu item | Edit > Project Settings > PopcornFX

Enable soft particles

Enable/Disable soft particles and allow to use post effects on the PKFxRenderingPlugin_component

Enable File log

Enables/Disables PopcornFX log in a popcorn.htm file at the project's root.

Enable unsafe code

Enables/Disables unsafe code needed for PopcornFX events and raycast collisions.
It will activate the "Allow unsafe code" checkbox and add the define PK_UNSAFE_CODE_ENABLED to the "Scripting Define Symbols" in the Player's Project Settings.

Enable raycast for collisions

Enables/Disables raycast for the collisions instead of the static mesh set with SceneMeshPkmmPath. Those raycasts are emitted by the C# to the Unity engine and are a lot slower than the one for the static meshes.

Impact performance.

Split the draw calls of the particles that require disabling back-face culling

Enable/Disables the split of the draw calls to disable back-face culling.

Run PopcorFX on a single thread to avoid visual studio hangs

Enables/Disables single thread to avoid visual studio hangs while debugging (see Visual Studio hangs:

Asset used to create the materials for the particles

See PKFxMaterialFactory.

Automatic mesh resizing to avoid dynamic re-alloc during the next run

Unity has a huge performance issue when retrieving the native handlers on the mesh buffers (see As we need to retrieve those handlers every time the meshes are resized, and as we cannot guess how many particles will be spawned in each mesh, we need an estimation of the total number of particles that will be spawned in the Unity project.

To do that, we implemented a counter in the PKFxSettings that will keep track of the most particles spawned per Unity mesh. If you enable this option, during the next play in editor mode, the number of particles will be recorded.

Vertex buffer size multiplicator

The size multiplicators are used to avoid resizing the meshes buffers too often.

The formula to compute the vertex buffer size for a mesh is the following:

BufferVertexCount = ParticleCount * VertexPerParticle + VertexBufferSizeMultiplicator * ParticleCount * VertexPerParticle

Lets say that you have a Unity mesh which holds at most 10 regular billboard particles, if your vertex buffer size multiplicator is 0.5, the mesh will be resized to hold 10 + 0.5 * 10 = 15 particles, which means that is more particles spawn later on, the mesh will not have to resize until at least 5 more particles are spawned.

Index buffer size multiplicator

Exactly the same thing as the vertex buffer size multiplicator, but applied to the index count of the meshes. Generally, you should try to set the same value in both multiplicators.