Search across packages, versions, files, declarations, and comments. Use multiple terms to narrow results (AND), and add @vertex, @fragment, or @compute to filter by shader stage.

Structures

EvaluateAndSampleBrdfResult

#
struct EvaluateAndSampleBrdfResult {
wi: vec3<f32> ,
throughput: vec3<f32> ,
pdf: f32 ,
diffuse_selected: bool ,
}

LobeReflectances

#
struct LobeReflectances {
specular: vec3<f32> ,
diffuse: vec3<f32> ,
}

Functions

lobe_reflectances

#

Hemispherical reflectance of each lobe

fn lobe_reflectances (
F0_metal: vec3<f32>
, 
F0_dielectric: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
) -> LobeReflectances

specular_lobe_sampling_probability

#
fn specular_lobe_sampling_probability ( , 
perceptual_roughness: f32
) -> f32

evaluate_and_sample_brdf

#
fn evaluate_and_sample_brdf (
wo: vec3<f32>
, 
world_normal: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
, 
rng: ptr<function, u32>
) -> EvaluateAndSampleBrdfResult

evaluate_brdf

#
fn evaluate_brdf (
wo: vec3<f32>
, 
wi: vec3<f32>
, 
world_normal: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
) -> vec3<f32>

evaluate_diffuse_brdf

#
fn evaluate_diffuse_brdf (
wo: vec3<f32>
, 
wi: vec3<f32>
, 
world_normal: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
) -> vec3<f32>

evaluate_specular_brdf

#
fn evaluate_specular_brdf (
wo: vec3<f32>
, 
wi: vec3<f32>
, 
world_normal: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
) -> vec3<f32>

brdf_pdf

#
fn brdf_pdf (
wo: vec3<f32>
, 
wi: vec3<f32>
, 
world_normal: vec3<f32>
, 
material: ResolvedMaterial
, 
F_ab: vec2<f32>
) -> f32

fresnel

#
fn fresnel (
f0: vec3<f32>
, 
LdotH: f32
) -> vec3<f32>

F_AB

#

Scale/bias approximation

fn F_AB (
perceptual_roughness: f32
, 
NdotV: f32
) -> vec2<f32>
Contents