Fix CI and add back internal assets
This commit is contained in:
parent
152360f2da
commit
3b0c831c80
@ -276,14 +276,14 @@ fn generate_radiance_map(@builtin(global_invocation_id) global_id: vec3u) {
|
|||||||
// and golden angle to get a uniform distribution
|
// and golden angle to get a uniform distribution
|
||||||
fn uniform_sample_sphere(i: u32, normal: vec3f) -> vec3f {
|
fn uniform_sample_sphere(i: u32, normal: vec3f) -> vec3f {
|
||||||
// Get stratified sample index
|
// Get stratified sample index
|
||||||
let strat_i = i % constants.sample_count;
|
let index = i % constants.sample_count;
|
||||||
|
|
||||||
let golden_angle = 2.4;
|
let golden_angle = 2.4;
|
||||||
let full_sphere = f32(constants.sample_count) * 2.0;
|
let full_sphere = f32(constants.sample_count) * 2.0;
|
||||||
let z = 1.0 - (2.0 * f32(strat_i) + 1.0) / full_sphere;
|
let z = 1.0 - (2.0 * f32(index) + 1.0) / full_sphere;
|
||||||
let r = fast_sqrt(1.0 - z * z);
|
let r = fast_sqrt(1.0 - z * z);
|
||||||
|
|
||||||
let phi = f32(strat_i) * golden_angle;
|
let phi = f32(index) * golden_angle;
|
||||||
|
|
||||||
// Create the direction vector
|
// Create the direction vector
|
||||||
let dir_uniform = vec3f(
|
let dir_uniform = vec3f(
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
use bevy_asset::{weak_handle, Assets, Handle};
|
use bevy_asset::{load_embedded_asset, weak_handle, Assets, Handle};
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
component::Component,
|
component::Component,
|
||||||
entity::Entity,
|
entity::Entity,
|
||||||
@ -18,7 +18,7 @@ use bevy_render::{
|
|||||||
binding_types::*, AddressMode, BindGroup, BindGroupEntries, BindGroupLayout,
|
binding_types::*, AddressMode, BindGroup, BindGroupEntries, BindGroupLayout,
|
||||||
BindGroupLayoutEntries, CachedComputePipelineId, ComputePassDescriptor,
|
BindGroupLayoutEntries, CachedComputePipelineId, ComputePassDescriptor,
|
||||||
ComputePipelineDescriptor, Extent3d, FilterMode, PipelineCache, Sampler,
|
ComputePipelineDescriptor, Extent3d, FilterMode, PipelineCache, Sampler,
|
||||||
SamplerBindingType, SamplerDescriptor, Shader, ShaderDefVal, ShaderStages, ShaderType,
|
SamplerBindingType, SamplerDescriptor, ShaderDefVal, ShaderStages, ShaderType,
|
||||||
StorageTextureAccess, Texture, TextureAspect, TextureDescriptor, TextureDimension,
|
StorageTextureAccess, Texture, TextureAspect, TextureDescriptor, TextureDimension,
|
||||||
TextureFormat, TextureSampleType, TextureUsages, TextureView, TextureViewDescriptor,
|
TextureFormat, TextureSampleType, TextureUsages, TextureView, TextureViewDescriptor,
|
||||||
TextureViewDimension, UniformBuffer,
|
TextureViewDimension, UniformBuffer,
|
||||||
@ -32,13 +32,6 @@ use bevy_render::{
|
|||||||
|
|
||||||
use crate::light_probe::environment_map::EnvironmentMapLight;
|
use crate::light_probe::environment_map::EnvironmentMapLight;
|
||||||
|
|
||||||
/// Single Pass Downsampling (SPD) shader handle
|
|
||||||
pub const SPD_SHADER_HANDLE: Handle<Shader> = weak_handle!("5dcf400c-bcb3-49b9-8b7e-80f4117eaf82");
|
|
||||||
|
|
||||||
/// Environment Filter shader handle
|
|
||||||
pub const ENVIRONMENT_FILTER_SHADER_HANDLE: Handle<Shader> =
|
|
||||||
weak_handle!("3110b545-78e0-48fc-b86e-8bc0ea50fc67");
|
|
||||||
|
|
||||||
/// Sphere Cosine Weighted Irradiance shader handle
|
/// Sphere Cosine Weighted Irradiance shader handle
|
||||||
pub const STBN_SPHERE: Handle<Image> = weak_handle!("3110b545-78e0-48fc-b86e-8bc0ea50fc67");
|
pub const STBN_SPHERE: Handle<Image> = weak_handle!("3110b545-78e0-48fc-b86e-8bc0ea50fc67");
|
||||||
pub const STBN_VEC2: Handle<Image> = weak_handle!("3110b545-78e0-48fc-b86e-8bc0ea50fc67");
|
pub const STBN_VEC2: Handle<Image> = weak_handle!("3110b545-78e0-48fc-b86e-8bc0ea50fc67");
|
||||||
@ -271,7 +264,7 @@ impl FromWorld for GeneratorPipelines {
|
|||||||
label: Some("spd_first_pipeline".into()),
|
label: Some("spd_first_pipeline".into()),
|
||||||
layout: vec![layouts.spd.clone()],
|
layout: vec![layouts.spd.clone()],
|
||||||
push_constant_ranges: vec![],
|
push_constant_ranges: vec![],
|
||||||
shader: SPD_SHADER_HANDLE,
|
shader: load_embedded_asset!(world, "spd.wgsl"),
|
||||||
shader_defs: shader_defs.clone(),
|
shader_defs: shader_defs.clone(),
|
||||||
entry_point: "spd_downsample_first".into(),
|
entry_point: "spd_downsample_first".into(),
|
||||||
zero_initialize_workgroup_memory: false,
|
zero_initialize_workgroup_memory: false,
|
||||||
@ -282,7 +275,7 @@ impl FromWorld for GeneratorPipelines {
|
|||||||
label: Some("spd_second_pipeline".into()),
|
label: Some("spd_second_pipeline".into()),
|
||||||
layout: vec![layouts.spd.clone()],
|
layout: vec![layouts.spd.clone()],
|
||||||
push_constant_ranges: vec![],
|
push_constant_ranges: vec![],
|
||||||
shader: SPD_SHADER_HANDLE,
|
shader: load_embedded_asset!(world, "spd.wgsl"),
|
||||||
shader_defs,
|
shader_defs,
|
||||||
entry_point: "spd_downsample_second".into(),
|
entry_point: "spd_downsample_second".into(),
|
||||||
zero_initialize_workgroup_memory: false,
|
zero_initialize_workgroup_memory: false,
|
||||||
@ -293,7 +286,7 @@ impl FromWorld for GeneratorPipelines {
|
|||||||
label: Some("radiance_pipeline".into()),
|
label: Some("radiance_pipeline".into()),
|
||||||
layout: vec![layouts.radiance.clone()],
|
layout: vec![layouts.radiance.clone()],
|
||||||
push_constant_ranges: vec![],
|
push_constant_ranges: vec![],
|
||||||
shader: ENVIRONMENT_FILTER_SHADER_HANDLE,
|
shader: load_embedded_asset!(world, "environment_filter.wgsl"),
|
||||||
shader_defs: vec![],
|
shader_defs: vec![],
|
||||||
entry_point: "generate_radiance_map".into(),
|
entry_point: "generate_radiance_map".into(),
|
||||||
zero_initialize_workgroup_memory: false,
|
zero_initialize_workgroup_memory: false,
|
||||||
@ -304,7 +297,7 @@ impl FromWorld for GeneratorPipelines {
|
|||||||
label: Some("irradiance_pipeline".into()),
|
label: Some("irradiance_pipeline".into()),
|
||||||
layout: vec![layouts.irradiance.clone()],
|
layout: vec![layouts.irradiance.clone()],
|
||||||
push_constant_ranges: vec![],
|
push_constant_ranges: vec![],
|
||||||
shader: ENVIRONMENT_FILTER_SHADER_HANDLE,
|
shader: load_embedded_asset!(world, "environment_filter.wgsl"),
|
||||||
shader_defs: vec![],
|
shader_defs: vec![],
|
||||||
entry_point: "generate_irradiance_map".into(),
|
entry_point: "generate_irradiance_map".into(),
|
||||||
zero_initialize_workgroup_memory: false,
|
zero_initialize_workgroup_memory: false,
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
//! Light probes for baked global illumination.
|
//! Light probes for baked global illumination.
|
||||||
|
|
||||||
use bevy_app::{App, Plugin, Update};
|
use bevy_app::{App, Plugin, Update};
|
||||||
use bevy_asset::AssetId;
|
use bevy_asset::{embedded_asset, load_internal_binary_asset, AssetId};
|
||||||
use bevy_core_pipeline::core_3d::{graph::{Core3d, Node3d}, Camera3d};
|
use bevy_core_pipeline::core_3d::{
|
||||||
|
graph::{Core3d, Node3d},
|
||||||
|
Camera3d,
|
||||||
|
};
|
||||||
use bevy_derive::{Deref, DerefMut};
|
use bevy_derive::{Deref, DerefMut};
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
component::Component,
|
component::Component,
|
||||||
@ -18,7 +21,19 @@ use bevy_math::{Affine3A, FloatOrd, Mat4, Vec3A, Vec4};
|
|||||||
use bevy_platform::collections::HashMap;
|
use bevy_platform::collections::HashMap;
|
||||||
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
|
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
|
||||||
use bevy_render::{
|
use bevy_render::{
|
||||||
extract_component::ExtractComponentPlugin, extract_instances::ExtractInstancesPlugin, load_shader_library, primitives::{Aabb, Frustum}, render_asset::RenderAssets, render_graph::RenderGraphApp, render_resource::{DynamicUniformBuffer, Sampler, ShaderType, TextureView}, renderer::{RenderAdapter, RenderDevice, RenderQueue}, settings::WgpuFeatures, sync_world::RenderEntity, texture::{FallbackImage, GpuImage}, view::{ExtractedView, Visibility}, Extract, ExtractSchedule, Render, RenderApp, RenderSystems
|
extract_component::ExtractComponentPlugin,
|
||||||
|
extract_instances::ExtractInstancesPlugin,
|
||||||
|
load_shader_library,
|
||||||
|
primitives::{Aabb, Frustum},
|
||||||
|
render_asset::RenderAssets,
|
||||||
|
render_graph::RenderGraphApp,
|
||||||
|
render_resource::{DynamicUniformBuffer, Sampler, ShaderType, TextureView},
|
||||||
|
renderer::{RenderAdapter, RenderDevice, RenderQueue},
|
||||||
|
settings::WgpuFeatures,
|
||||||
|
sync_world::RenderEntity,
|
||||||
|
texture::{FallbackImage, GpuImage},
|
||||||
|
view::{ExtractedView, Visibility},
|
||||||
|
Extract, ExtractSchedule, Render, RenderApp, RenderSystems,
|
||||||
};
|
};
|
||||||
use bevy_transform::{components::Transform, prelude::GlobalTransform};
|
use bevy_transform::{components::Transform, prelude::GlobalTransform};
|
||||||
use generate::{
|
use generate::{
|
||||||
@ -30,7 +45,13 @@ use tracing::error;
|
|||||||
|
|
||||||
use core::{hash::Hash, ops::Deref};
|
use core::{hash::Hash, ops::Deref};
|
||||||
|
|
||||||
use crate::{generate::{GeneratorBindGroupLayouts, GeneratorNode, GeneratorSamplers, IrradianceMapNode, RadianceMapNode}, light_probe::environment_map::{EnvironmentMapIds, EnvironmentMapLight}};
|
use crate::{
|
||||||
|
generate::{
|
||||||
|
GeneratorBindGroupLayouts, GeneratorNode, GeneratorSamplers, IrradianceMapNode,
|
||||||
|
RadianceMapNode,
|
||||||
|
},
|
||||||
|
light_probe::environment_map::{EnvironmentMapIds, EnvironmentMapLight},
|
||||||
|
};
|
||||||
|
|
||||||
use self::irradiance_volume::IrradianceVolume;
|
use self::irradiance_volume::IrradianceVolume;
|
||||||
|
|
||||||
@ -337,6 +358,38 @@ impl Plugin for LightProbePlugin {
|
|||||||
load_shader_library!(app, "environment_map.wgsl");
|
load_shader_library!(app, "environment_map.wgsl");
|
||||||
load_shader_library!(app, "irradiance_volume.wgsl");
|
load_shader_library!(app, "irradiance_volume.wgsl");
|
||||||
|
|
||||||
|
embedded_asset!(app, "environment_filter.wgsl");
|
||||||
|
embedded_asset!(app, "spd.wgsl");
|
||||||
|
|
||||||
|
load_internal_binary_asset!(
|
||||||
|
app,
|
||||||
|
STBN_SPHERE,
|
||||||
|
"noise/sphere_coshemi_gauss1_0.png",
|
||||||
|
|bytes, _: String| Image::from_buffer(
|
||||||
|
bytes,
|
||||||
|
bevy_image::ImageType::Format(bevy_image::ImageFormat::Png),
|
||||||
|
bevy_image::CompressedImageFormats::NONE,
|
||||||
|
false,
|
||||||
|
bevy_image::ImageSampler::Default,
|
||||||
|
bevy_asset::RenderAssetUsages::RENDER_WORLD,
|
||||||
|
)
|
||||||
|
.expect("Failed to load sphere cosine weighted blue noise texture")
|
||||||
|
);
|
||||||
|
load_internal_binary_asset!(
|
||||||
|
app,
|
||||||
|
STBN_VEC2,
|
||||||
|
"noise/vector2_uniform_gauss1_0.png",
|
||||||
|
|bytes, _: String| Image::from_buffer(
|
||||||
|
bytes,
|
||||||
|
bevy_image::ImageType::Format(bevy_image::ImageFormat::Png),
|
||||||
|
bevy_image::CompressedImageFormats::NONE,
|
||||||
|
false,
|
||||||
|
bevy_image::ImageSampler::Default,
|
||||||
|
bevy_asset::RenderAssetUsages::RENDER_WORLD,
|
||||||
|
)
|
||||||
|
.expect("Failed to load vector2 uniform blue noise texture")
|
||||||
|
);
|
||||||
|
|
||||||
app.register_type::<LightProbe>()
|
app.register_type::<LightProbe>()
|
||||||
.register_type::<EnvironmentMapLight>()
|
.register_type::<EnvironmentMapLight>()
|
||||||
.register_type::<IrradianceVolume>()
|
.register_type::<IrradianceVolume>()
|
||||||
@ -378,7 +431,15 @@ impl Plugin for LightProbePlugin {
|
|||||||
)
|
)
|
||||||
.add_systems(
|
.add_systems(
|
||||||
Render,
|
Render,
|
||||||
(upload_light_probes, prepare_environment_uniform_buffer)
|
prepare_generator_bind_groups.in_set(RenderSystems::PrepareBindGroups),
|
||||||
|
)
|
||||||
|
.add_systems(
|
||||||
|
Render,
|
||||||
|
(
|
||||||
|
upload_light_probes,
|
||||||
|
prepare_environment_uniform_buffer,
|
||||||
|
prepare_intermediate_textures,
|
||||||
|
)
|
||||||
.in_set(RenderSystems::PrepareResources),
|
.in_set(RenderSystems::PrepareResources),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user