class C_OP_RenderGpuImplicit : public CParticleFunctionRenderer
{
public:
    // MPropertySortPriority = -1
    // MPropertyDescription = Honors the per-particle radius (multiplied by radius scale) but is more expensive to render.  Some particles with large radii can make things much costlier
    bool m_bUsePerParticleRadius;
    // MPropertyFriendlyName = (optional) vertex buffer size (k)
    // MPropertyAttributeRange = 0 1024
    uint32 m_nVertexCountKb;
    // MPropertyFriendlyName = (optional) index buffer size (k)
    // MPropertyAttributeRange = 0 2048
    uint32 m_nIndexCountKb;
    CParticleCollectionRendererFloatInput m_fGridSize;
    CParticleCollectionRendererFloatInput m_fRadiusScale;
    // MPropertyAttributeRange = .1 .95
    CParticleCollectionRendererFloatInput m_fIsosurfaceThreshold;
    // MPropertyFriendlyName = scale CP (grid size/particle radius/threshold = x/y/z)
    int32 m_nScaleCP;
    CStrongHandle<InfoForResourceTypeIMaterial2> m_hMaterial;
};

KV3 Class Defaults

{
    _class = "C_OP_RenderGpuImplicit"
    m_flOpStrength = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_nOpEndCapState = "PARTICLE_ENDCAP_ALWAYS_ON"
    m_nToolsState = "PARTICLE_TOOLS_STATE_ALWAYS_ON"
    m_flOpStartFadeInTime = 0.0
    m_flOpEndFadeInTime = 0.0
    m_flOpStartFadeOutTime = 0.0
    m_flOpEndFadeOutTime = 0.0
    m_flOpFadeOscillatePeriod = 0.0
    m_bNormalizeToStopTime = false
    m_flOpTimeOffsetMin = 0.0
    m_flOpTimeOffsetMax = 0.0
    m_nOpTimeOffsetSeed = 0
    m_nOpTimeScaleSeed = 0
    m_flOpTimeScaleMin = 1.0
    m_flOpTimeScaleMax = 1.0
    m_bDisableOperator = false
    m_Notes = ""
    VisibilityInputs = 
    {
        m_flCameraBias = 0.0
        m_nCPin = -1
        m_flProxyRadius = 1.0
        m_flInputMin = 0.0
        m_flInputMax = 1.0
        m_flInputPixelVisFade = 0.25
        m_flNoPixelVisibilityFallback = 1.0
        m_flDistanceInputMin = 0.0
        m_flDistanceInputMax = 0.0
        m_flDotInputMin = 0.0
        m_flDotInputMax = 0.0
        m_bDotCPAngles = true
        m_bDotCameraAngles = false
        m_flAlphaScaleMin = 0.0
        m_flAlphaScaleMax = 1.0
        m_flRadiusScaleMin = 1.0
        m_flRadiusScaleMax = 1.0
        m_flRadiusScaleFOVBase = 0.0
        m_bRightEye = false
    }
    m_bCannotBeRefracted = true
    m_bSkipRenderingOnMobile = false
    m_bUsePerParticleRadius = false
    m_nVertexCountKb = 0
    m_nIndexCountKb = 0
    m_fGridSize = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_fRadiusScale = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_fIsosurfaceThreshold = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 0.95
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_nScaleCP = -1
    m_hMaterial = resource:"materials/dev/roomwalls_white.vmat"
}