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
|
||||
fn uniform_sample_sphere(i: u32, normal: vec3f) -> vec3f {
|
||||
// Get stratified sample index
|
||||
let strat_i = i % constants.sample_count;
|
||||
let index = i % constants.sample_count;
|
||||
|
||||
let golden_angle = 2.4;
|
||||
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 phi = f32(strat_i) * golden_angle;
|
||||
let phi = f32(index) * golden_angle;
|
||||
|
||||
// Create the direction vector
|
||||
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::{
|
||||
component::Component,
|
||||
entity::Entity,
|
||||
@ -18,7 +18,7 @@ use bevy_render::{
|
||||
binding_types::*, AddressMode, BindGroup, BindGroupEntries, BindGroupLayout,
|
||||
BindGroupLayoutEntries, CachedComputePipelineId, ComputePassDescriptor,
|
||||
ComputePipelineDescriptor, Extent3d, FilterMode, PipelineCache, Sampler,
|
||||
SamplerBindingType, SamplerDescriptor, Shader, ShaderDefVal, ShaderStages, ShaderType,
|
||||
SamplerBindingType, SamplerDescriptor, ShaderDefVal, ShaderStages, ShaderType,
|
||||
StorageTextureAccess, Texture, TextureAspect, TextureDescriptor, TextureDimension,
|
||||
TextureFormat, TextureSampleType, TextureUsages, TextureView, TextureViewDescriptor,
|
||||
TextureViewDimension, UniformBuffer,
|
||||
@ -32,13 +32,6 @@ use bevy_render::{
|
||||
|
||||
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
|
||||
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");
|
||||
@ -271,7 +264,7 @@ impl FromWorld for GeneratorPipelines {
|
||||
label: Some("spd_first_pipeline".into()),
|
||||
layout: vec![layouts.spd.clone()],
|
||||
push_constant_ranges: vec![],
|
||||
shader: SPD_SHADER_HANDLE,
|
||||
shader: load_embedded_asset!(world, "spd.wgsl"),
|
||||
shader_defs: shader_defs.clone(),
|
||||
entry_point: "spd_downsample_first".into(),
|
||||
zero_initialize_workgroup_memory: false,
|
||||
@ -282,7 +275,7 @@ impl FromWorld for GeneratorPipelines {
|
||||
label: Some("spd_second_pipeline".into()),
|
||||
layout: vec![layouts.spd.clone()],
|
||||
push_constant_ranges: vec![],
|
||||
shader: SPD_SHADER_HANDLE,
|
||||
shader: load_embedded_asset!(world, "spd.wgsl"),
|
||||
shader_defs,
|
||||
entry_point: "spd_downsample_second".into(),
|
||||
zero_initialize_workgroup_memory: false,
|
||||
@ -293,7 +286,7 @@ impl FromWorld for GeneratorPipelines {
|
||||
label: Some("radiance_pipeline".into()),
|
||||
layout: vec![layouts.radiance.clone()],
|
||||
push_constant_ranges: vec![],
|
||||
shader: ENVIRONMENT_FILTER_SHADER_HANDLE,
|
||||
shader: load_embedded_asset!(world, "environment_filter.wgsl"),
|
||||
shader_defs: vec![],
|
||||
entry_point: "generate_radiance_map".into(),
|
||||
zero_initialize_workgroup_memory: false,
|
||||
@ -304,7 +297,7 @@ impl FromWorld for GeneratorPipelines {
|
||||
label: Some("irradiance_pipeline".into()),
|
||||
layout: vec![layouts.irradiance.clone()],
|
||||
push_constant_ranges: vec![],
|
||||
shader: ENVIRONMENT_FILTER_SHADER_HANDLE,
|
||||
shader: load_embedded_asset!(world, "environment_filter.wgsl"),
|
||||
shader_defs: vec![],
|
||||
entry_point: "generate_irradiance_map".into(),
|
||||
zero_initialize_workgroup_memory: false,
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
//! Light probes for baked global illumination.
|
||||
|
||||
use bevy_app::{App, Plugin, Update};
|
||||
use bevy_asset::AssetId;
|
||||
use bevy_core_pipeline::core_3d::{graph::{Core3d, Node3d}, Camera3d};
|
||||
use bevy_asset::{embedded_asset, load_internal_binary_asset, AssetId};
|
||||
use bevy_core_pipeline::core_3d::{
|
||||
graph::{Core3d, Node3d},
|
||||
Camera3d,
|
||||
};
|
||||
use bevy_derive::{Deref, DerefMut};
|
||||
use bevy_ecs::{
|
||||
component::Component,
|
||||
@ -18,7 +21,19 @@ use bevy_math::{Affine3A, FloatOrd, Mat4, Vec3A, Vec4};
|
||||
use bevy_platform::collections::HashMap;
|
||||
use bevy_reflect::{std_traits::ReflectDefault, Reflect};
|
||||
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 generate::{
|
||||
@ -30,7 +45,13 @@ use tracing::error;
|
||||
|
||||
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;
|
||||
|
||||
@ -337,6 +358,38 @@ impl Plugin for LightProbePlugin {
|
||||
load_shader_library!(app, "environment_map.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>()
|
||||
.register_type::<EnvironmentMapLight>()
|
||||
.register_type::<IrradianceVolume>()
|
||||
@ -378,7 +431,15 @@ impl Plugin for LightProbePlugin {
|
||||
)
|
||||
.add_systems(
|
||||
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),
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user