Oven: Particle
COvenBakeConfig_Particle
Used for PopcornFX’s Particle effect files.
Applied to: *.pkfx
Property name |
Default value |
Description |
All common properties, see COvenBakeConfig_Base |
||
|
|
Can be any of the following:
|
|
|
Only used when 'BakeMode' is set to 'Binary'. Can be any of the following:
Note that if the endianness does not match the target platform, the runtime will still be able to load the files, but will take a bit more time in order to swap all the values to the platform’s format. |
|
|
If set to true, will remove all nodes unknown to the asset-baker (Usually editor-specific nodes). |
|
|
Array of extensions remaps. The baker will replace the extensions in all file-paths in the currently baked file. ExtensionsRemap =
{
"fbx=pkmm",
"png=dds",
"tga=dds"
};
|
|
|
When enabled, will compile all layers into runtime IRs and store them in the effect file. |
|
|
When enabled, will strip all source nodegraphs and scripts from the effect file. Cannot remove source if 'Compile' is not 'true': Would produce a useless, empty effect with neither sources, nor compiled bytecodes. |
|
|
Build versions: contains the list of build version tags |
|
|
String containing a series of nodegraph compiler & optimizer switches. See below for the list of supported switches |
|
|
List of backend configuration structures of type ‘COvenBakeConfig_ParticleCompiler’ (see below) |
COvenBakeConfig_ParticleCompiler
The particle compiler bake config is referenced by the 'BackendCompilers' array of the particle config object.
It allows you to setup specific command-lines to build the bytecode objects of the various backends. It is mainly used for the GPU D3D backends, where you can specify the commandline to send to d3dcompiler / fxc
Property name |
Default value |
Description |
|
|
Specifies the target backend
|
|
|
On Windows, bytecode bake command line. Usually to a d3dcompiler or fxc binary |
|
|
On Linux, bytecode bake command line |
|
|
On Macosx, bytecode bake command line |
See the COvenBakeConfig_Base documentation page for command-line structure.
Compiler switches
This is a string containing a space-separated list of switches allowing control over the graph compiler and optimizer
COvenBakeConfig_Particle $DDECD857
{
BakeTarget = "Desktop";
CompilerSwitches = "--determinism --determinism-mod=0x1234 --user-debug --geo-passes=2";
}
Here are all currently available compiler switches:
General control |
|
|
No optimizations |
|
Instruction optimizations enabled, no storage or global effect optimizations (similar to editor’s 'Editor' optimization level) |
|
All optimizations enabled, user debug not removed (similar to editor’s ‘Shipping’ optimization level) |
|
All optimizations enabled, user debug removed (default level when baking) |
|
Fold constant samplers (default: ON) |
|
Enable or disable user debug, for example constructs coming from the |
|
Turn all warnings into errors, infos, or disables them (default: OFF)# [.cf88]#[v2.19.0] |
|
Turn all infos into warnings, errors, or disables them (default: OFF) [v2.19.0] |
|
Turn warning |
|
Turn info |
|
Forces warning |
|
Forces info |
Feature control |
|
|
Enable or disable determinism for this effect (default: OFF) |
|
Seed modifier applied on the deterministic seed of each layer of the effect (default: 0) |
|
Enable/disable explicit effect visibility toggles from the SDK (default: Enabled) [v2.7.0] |
|
Enable/disable explicit effect time-scaling from the SDK (default: Enabled) [v2.7.0] |
|
Enable/disable effect teleport detection (default: Enabled) [v2.7.0] |
|
Disable spatial layers (default: Enabled) [v2.15.0] |
|
Disable event-graph portals (default: Enabled) [v2.15.0] |
|
Disable animtrack samplers (default: Enabled) [v2.15.0] |
|
Disable audio samplers (default: Enabled) [v2.15.0] |
|
Disable curve samplers (default: Enabled) [v2.15.0] |
|
Disable event-stream samplers (default: Enabled) [v2.15.0] |
|
Disable image samplers (default: Enabled) [v2.15.0] |
|
Disable image atlas samplers (default: Enabled) [v2.20.0] |
|
Disable grid samplers (default: Enabled) [v2.19.0] |
|
Disable shape samplers (default: Enabled) [v2.15.0] |
|
Disable text samplers (default: Enabled) [v2.15.0] |
|
Disable vector-field samplers (default: Enabled) [v2.15.0] |
|
Disable animtrack attribute samplers (default: Enabled) [v2.15.0] |
|
Disable audio attribute samplers (default: Enabled) [v2.15.0] |
|
Disable curve attribute samplers (default: Enabled) [v2.15.0] |
|
Disable event-stream attribute samplers (default: Enabled) [v2.15.0] |
|
Disable image attribute samplers (default: Enabled) [v2.15.0] |
|
Disable image atlas attribute samplers (default: Enabled) [v2.20.0] |
|
Disable grid attribute samplers (default: Enabled) [v2.19.0] |
|
Disable shape attribute samplers (default: Enabled) [v2.15.0] |
|
Disable text attribute samplers (default: Enabled) [v2.15.0] |
|
Disable vector-field attribute samplers (default: Enabled) [v2.15.0] |
|
Disable billboard renderers (default: Enabled) [v2.15.0] |
|
Disable ribbon renderers (default: Enabled) [v2.15.0] |
|
Disable mesh renderers (default: Enabled) [v2.15.0] |
|
Disable triangle renderers (default: Enabled) [v2.15.0] |
|
Disable decal renderers (default: Enabled) [v2.15.0] |
|
Disable light renderers (default: Enabled) [v2.15.0] |
|
Disable sound renderers (default: Enabled) [v2.15.0] |
Resource optimizer pass |
|
|
Enable/disable resource optimization (default: ON) |
|
Dead resource elimination (default: ON) |
Instruction optimizer pass |
|
|
Load-store forwarding (default: ON) |
|
Copy propagation (default: ON) |
|
Constant folding (default: ON) |
|
Constant folding, aggressive (default: ON) |
|
Common sub-expression elimination (default: ON) |
|
Instruction combining (default: ON) |
|
Value-range propagation (default: ON) (new: v2.3) |
|
Dead code elimination (default: ON) |
|
Dead code elimination, aggressive (default: ON) |
|
Number of ULPs below which two floating-point values are considered the same, when performing constant-folding fuzzy compares (default: 2) [v2.7.0] |
Storage optimizer pass |
|
|
Load-store path merge (default: ON) |
|
Constant folding (default: ON) |
|
Constant storage detection (default: ON) |
|
Constant storage removal (default: ON) |
|
Value-range propagation (default: ON) |
|
Maximum number of times a storage value-range limit can be modified before being bumped to max-range (default: 4) |
|
Maximum number of storage value-range propagation passes (default: 16) |
|
Redundant storage removal (default: ON) |
|
Unused storage removal (default: ON) |
|
Load-store path removal (default: ON) |
|
Useless renderer removal (default: ON) [v2.7.0] |
|
Fixed-time optimization (default: ON) |
Payload optimizer pass |
|
|
Enable/disable payload optimization (default: ON)# |
Global effect optimizer pass |
|
|
Disconnected layer removal (default: ON) |
|
Useless layer removal (default: ON) |
|
Value-range propagation on event payloads (in and out of layers) (default ON) |
|
Maximum number of times an event value-range limit can be modified before being bumped to max-range (default: 4) |
|
Maximum number of event value-range propagation passes (default: 16) |
|
Number of global effect optimization passes (default: 4) |
Previewing compiler-switches in-editor
You can specify custom compiler switches in the project settings, under the Editor > General category.
These will be used by the effect editor & content-browser when compiling & analyzing assets, and can be different from the ones used during baking specified in the .pkcf bake config file.
For example, you can use that to modify warnings/errors, ignore specific warnings in the content-browser, etc:

These can in turn also be overridden per-user in the editor preferences under the Content editor > Effect Editor category:

Example
Here is an example of a possible setup in the config file:
COvenBakeConfig_Particle $00001234
{
BakeTarget = "Desktop";
CompilerSwitches = "--geo-passes=6";
BackendCompilers = {
$00000042,
$00000043,
};
}
COvenBakeConfig_ParticleCompiler $00000042
{
Target = D3D11;
BakeBytecodeCommandLine_Windows = "\"{FXC}\" -T cs_5_0 -E Root -WX -Ges -O3 -nologo -Fo \"$(TargetPath)\" \"$(InputPath)\"";
}
COvenBakeConfig_ParticleCompiler $00000043
{
Target = D3D12;
BakeBytecodeCommandLine_Windows = "\"{FXC}\" -T cs_5_1 -E Root -WX -Ges -O3 -nologo -all_resources_bound -Fo \"$(TargetPath)\" \"$(InputPath)\"";
}
This will also compile the GPU sim bytecodes for the D3D11 and D3D12 backends, and store them in the baked pkfx.
Without this step, the GPU sim will have to compile the bytecodes on the fly at load time, which is not always possible depending on the platform, and which you most likely do not want to do considering how slow it is to compile with fxc.