Example is close, but still no repro on the rendering bug...

main
Elijah C. Voigt 2 years ago
parent d75658939d
commit 1d8a505d23

@ -63,20 +63,19 @@ fn fragment(
var out: FragmentOutput;
out.color = apply_pbr_lighting(pbr_input);
var pos = vec2(in.uv * 2.0);
var pos = vec2(in.uv * 2.718);
var n = fbm(pos);
var cutoff = dissolve.percentage;
if n > cutoff {
// out.color = vec4(0.0, 1.0, 0.0, cutoff);
discard;
}
if n > (cutoff - 0.01) {
out.color = vec4(0.0, 1.0, 1.0, 1.0);
}
if n > cutoff {
discard;
}
return out;
}

@ -1,8 +1,14 @@
use bevy::core_pipeline::experimental::taa::TemporalAntiAliasSettings;
use bevy::core_pipeline::prepass::MotionVectorPrepass;
use bevy::core_pipeline::tonemapping::DebandDither;
use bevy::core_pipeline::Skybox;
use bevy::pbr::ExtendedMaterial;
use bevy::pbr::MaterialExtension;
use bevy::pbr::OpaqueRendererMethod;
use bevy::pbr::ScreenSpaceAmbientOcclusionBundle;
use bevy::prelude::*;
use bevy::render::render_resource::*;
use bevy::render::view::ColorGrading;
type MyMat = ExtendedMaterial<StandardMaterial, MatExt>;
@ -12,7 +18,9 @@ fn main() {
DefaultPlugins.set(ImagePlugin::default_nearest()),
MaterialPlugin::<MyMat>::default(),
))
.insert_resource(Msaa::Off)
.add_systems(Startup, setup)
.add_systems(Update, apply_skybox)
.add_systems(Update, set_scene)
.add_systems(Update, rotate)
.add_systems(Update, toggle_material.run_if(
@ -29,7 +37,10 @@ fn main() {
#[derive(Component)]
struct Root;
fn setup(mut commands: Commands) {
fn setup(
mut commands: Commands,
assets: Res<AssetServer>,
) {
commands.spawn((SceneBundle { ..default() }, Root));
commands.spawn(PointLightBundle {
@ -41,10 +52,49 @@ fn setup(mut commands: Commands) {
..default()
});
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(-1.0, 1.5, 4.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
});
commands.spawn((
Camera3dBundle {
transform: Transform::from_xyz(-1.0, 1.5, 4.0).looking_at(Vec3::ZERO, Vec3::Y),
..default()
},
)
);
}
fn apply_skybox(
cameras: Query<Entity, With<Camera>>,
mut images: ResMut<Assets<Image>>,
assets: Res<AssetServer>,
mut commands: Commands,
mut done: Local<bool>,
mut handle: Local<Handle<Image>>,
) {
if !*done {
info!("Applying skybox...");
*handle = assets.load("images/skybox.png");
if let Some(image) = images.get_mut(handle.clone()) {
info!("Loaded skybox image");
// NOTE: PNGs do not have any metadata that could indicate they contain a cubemap texture,
// so they appear as one texture. The following code reconfigures the texture as necessary.
if image.texture_descriptor.array_layer_count() == 1 {
image.reinterpret_stacked_2d_as_array(
image.texture_descriptor.size.height / image.texture_descriptor.size.width,
);
image.texture_view_descriptor = Some(TextureViewDescriptor {
dimension: Some(TextureViewDimension::Cube),
..default()
});
cameras.iter().for_each(|e| {
commands.entity(e).insert(Skybox(handle.clone()));
});
*done = true;
}
} else {
*done = false;
}
}
}
fn set_scene(
@ -90,7 +140,6 @@ fn init_materials(
.clone();
base.opaque_render_method = OpaqueRendererMethod::Auto;
base.alpha_mode = AlphaMode::Mask(0.5);
let ext_handle = materials.add(ExtendedMaterial { base, extension });

@ -10,7 +10,7 @@ use bevy::{
tonemapping::{DebandDither, Tonemapping},
Skybox,
}, input::mouse::{MouseButtonInput, MouseMotion, MouseScrollUnit, MouseWheel}, pbr::{
ExtendedMaterial, MaterialExtension, OpaqueRendererMethod,
ExtendedMaterial, MaterialExtension,
ScreenSpaceAmbientOcclusionBundle, ScreenSpaceAmbientOcclusionSettings,
}, render::{
render_resource::{AsBindGroup, ShaderRef, TextureViewDescriptor, TextureViewDimension},
@ -1310,14 +1310,11 @@ fn setup_capture_piece(
// Extension we will add to existing gltf-sourced materials
let extension = DissolveExtension { percentage: 1.0 };
// Base material we will extend for the duration of the dissolve effect
let mut base = standard_materials
let base = standard_materials
.get(std_handle)
.expect("Resolve material data")
.clone();
base.opaque_render_method = OpaqueRendererMethod::Auto;
base.alpha_mode = AlphaMode::Mask(0.5);
dissolve_materials.add(ExtendedMaterial { base, extension })
},
Some(dis_handle) => dis_handle.clone(),
@ -1419,10 +1416,6 @@ fn capture_piece(
"Play fade out animation {:?} {:?}",
delta, dissolve_material.extension.percentage
);
commands
.entity(_child)
.log_components();
}
);
}

Loading…
Cancel
Save