react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
244 lines • 7.35 kB
TypeScript
/**
* Options for screen space Ambient Occlusion (SSAO) and Screen Space Cone Tracing (SSCT)
*/
export interface AmbientOcclusionOptions {
/**
* Ambient Occlusion radius in meters, between 0 and ~10.
* @default 0.3
*/
radius?: number;
/**
* Controls ambient occlusion's contrast. Must be positive.
* @default 1.0
*/
power?: number;
/**
* Self-occlusion bias in meters. Use to avoid self-occlusion. Between 0 and a few mm.
* @default 0.0005
*/
bias?: number;
/**
* How each dimension of the AO buffer is scaled. Must be either 0.5 or 1.0.
* @default 0.5
*/
resolution?: number;
/**
* Strength of the Ambient Occlusion effect.
* @default 1.0
*/
intensity?: number;
/**
* Depth distance that constitutes an edge for filtering.
* @default 0.05
*/
bilateralThreshold?: number;
/**
* Affects the number of samples used for AO.
* @default 'LOW'
*/
quality?: QualityLevel;
/**
* Affects AO smoothness.
* @default 'MEDIUM'
*/
lowPassFilter?: QualityLevel;
/**
* Affects AO buffer upsampling quality.
* @default 'LOW'
*/
upsampling?: QualityLevel;
/**
* Enables or disables screen-space ambient occlusion.
* @default false
*/
enabled?: boolean;
/**
* Enables bent normals computation from AO, and specular AO.
* @default false
*/
bentNormals?: boolean;
/**
* Minimum angle in radians to consider.
* @default 0.0
*/
minHorizonAngleRad?: number;
}
export type QualityLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'ULTRA';
/**
* Dynamic resolution can be used to either reach a desired target frame rate
* by lowering the resolution of a View, or to increase the quality when the
* rendering is faster than the target frame rate.
*
* This structure can be used to specify the minimum scale factor used when
* lowering the resolution of a View, and the maximum scale factor used when
* increasing the resolution for higher quality rendering. The scale factors
* can be controlled on each X and Y axis independently. By default, all scale
* factors are set to 1.0.
*
* enabled: enable or disables dynamic resolution on a View
*
* homogeneousScaling: by default the system scales the major axis first. Set this to true
* to force homogeneous scaling.
*
* minScale: the minimum scale in X and Y this View should use
*
* maxScale: the maximum scale in X and Y this View should use
*
* quality: upscaling quality.
* LOW: 1 bilinear tap, Medium: 4 bilinear taps, High: 9 bilinear taps (tent)
*
* @note Dynamic resolution is only supported on platforms where the time to render
* a frame can be measured accurately. Dynamic resolution is currently only
* supported on Android.
*
* @see Renderer::FrameRateOptions
*
*/
export interface DynamicResolutionOptions {
/** enable or disable dynamic resolution */
enabled?: boolean;
/**
* Set to true to force homogeneous scaling
* @default false
**/
homogeneousScaling?: boolean;
/**
* Minimum scale factors in x and y
* @default [0.5, 0.5]
*/
minScale?: [x: number, y: number];
/**
* Maximum scale factors in x and y
* @default [1.0, 1.0]
*/
maxScale?: [x: number, y: number];
/**
* Sharpness when QualityLevel::MEDIUM or higher is used [0 (disabled), 1 (sharpest)]
*
* @default 0.9
*/
sharpness?: number;
/**
* Upscaling quality
* LOW: bilinear filtered blit. Fastest, poor quality
* MEDIUM: AMD FidelityFX FSR1 w/ mobile optimizations
* HIGH: AMD FidelityFX FSR1 w/ mobile optimizations
* ULTRA: AMD FidelityFX FSR1
* FSR1 require a well anti-aliased (MSAA or TAA), noise free scene.
*
* @default 'LOW'
*/
quality?: QualityLevel;
}
/**
* Options for Temporal Anti-aliasing (TAA)
* Most TAA parameters are extremely costly to change, as they will trigger the TAA post-process
* shaders to be recompiled. These options should be changed or set during initialization.
* `filterWidth`, `feedback` and `jitterPattern`, however, can be changed at any time.
*
* `feedback` of 0.1 effectively accumulates a maximum of 19 samples in steady state.
* see "A Survey of Temporal Antialiasing Techniques" by Lei Yang and all for more information.
*/
export interface TemporalAntiAliasingOptions {
/**
* Reconstruction filter width typically between 0.2 (sharper, aliased) and 1.5 (smoother)
* @default 1.0
*/
filterWidth?: number;
/**
* History feedback, between 0 (maximum temporal AA) and 1 (no temporal AA).
* @default 0.12
*/
feedback?: number;
/**
* Texturing lod bias (typically -1 or -2)
* @default -1.0
*/
lodBias?: number;
/**
* Post-TAA sharpen, especially useful when upscaling is true.
* @default 0.0
*/
sharpness?: number;
/**
* Enable or disable TAA
* @default false
*/
enabled: boolean;
/**
* Enable or disable upscaling
* @default false
*/
upscaling?: boolean;
/**
* Clipping algorithm:
* - NONE: no rejections (use for debugging)
* - CLAMP: clamping
* - ACCURATE: accurate box clipping
*
* @default 'ACCURATE'
*/
boxClipping?: 'ACCURATE' | 'CLAMP' | 'NONE';
/**
* Jitter Pattern:
* - RGSS_X4: 4-samples, rotated grid sampling
* - UNIFORM_HELIX_X4: 4-samples, uniform grid in helix sequence
* - HALTON_23_X8: 8-samples of halton 2,3
* - HALTON_23_X16: 16-samples of halton 2,3
* - HALTON_23_X32: 32-samples of halton 2,3
*
* @default 'HALTON_23_X16'
*/
jitterPattern?: 'RGSS_X4' | 'UNIFORM_HELIX_X4' | 'HALTON_23_X8' | 'HALTON_23_X16' | 'HALTON_23_X32';
/**
* Whether to filter the history buffer
* @default true
*/
filterHistory?: boolean;
/**
* Whether to apply the reconstruction filter to the input
* @default true
*/
filterInput?: boolean;
/**
* Whether to use the YcoCg color-space for history rejection
* @default false
*/
useYCoCg?: boolean;
/**
* High values increases ghosting artefact, lower values increases jittering, range [0.75, 1.25]
* @default 1.0
*/
varianceGamma?: number;
/**
* Adjust the feedback dynamically to reduce flickering
* @default false
*/
preventFlickering?: boolean;
/**
* Whether to apply history reprojection (debug option)
* @default true
*/
historyReprojection?: boolean;
}
export interface BloomOptions {
enabled?: boolean;
strength?: number;
resolution?: number;
levels?: number;
blendMode?: 'ADD' | 'INTERPOLATE';
threshold?: boolean;
highlight?: number;
quality?: QualityLevel;
lensFlare?: boolean;
starburst?: boolean;
chromaticAberration?: number;
ghostCount?: number;
ghostSpacing?: number;
ghostThreshold?: number;
haloThickness?: number;
haloRadius?: number;
haloThreshold?: number;
}
export declare function optionsToJSI(options: TemporalAntiAliasingOptions): Record<string, number>;
//# sourceMappingURL=Options.d.ts.map