textures, they DO they work! but how to sample?
This commit is contained in:
24
src/app.rs
24
src/app.rs
@@ -2,7 +2,9 @@ use bevy::{
|
||||
asset::RenderAssetUsages,
|
||||
prelude::*,
|
||||
render::{
|
||||
render_resource::{Extent3d, TextureDimension, TextureFormat, TextureUsages, TextureViewDimension},
|
||||
render_resource::{
|
||||
Extent3d, TextureDimension, TextureFormat, TextureUsages, TextureViewDescriptor, TextureViewDimension,
|
||||
},
|
||||
view::RenderLayers,
|
||||
},
|
||||
window::PrimaryWindow,
|
||||
@@ -93,19 +95,24 @@ fn setup(
|
||||
|
||||
let mut skybox_render_image = Image::new_fill(
|
||||
Extent3d {
|
||||
width: 1024,
|
||||
height: 768,
|
||||
width: 256,
|
||||
height: 1536,
|
||||
..Default::default()
|
||||
},
|
||||
TextureDimension::D3,
|
||||
TextureDimension::D2,
|
||||
&[255; PIXEL_SIZE],
|
||||
PIXEL_FORMAT,
|
||||
RenderAssetUsages::RENDER_WORLD,
|
||||
);
|
||||
skybox_render_image.reinterpret_stacked_2d_as_array(6);
|
||||
skybox_render_image.texture_descriptor.usage = TextureUsages::TEXTURE_BINDING | TextureUsages::RENDER_ATTACHMENT;
|
||||
skybox_render_image.texture_view_descriptor = Some(TextureViewDescriptor {
|
||||
dimension: Some(TextureViewDimension::Cube),
|
||||
..default()
|
||||
});
|
||||
let skybox_render_image_handle = images.add(skybox_render_image);
|
||||
|
||||
let skybox_asset = asset_server.load("sky-test.png");
|
||||
let skybox_asset = asset_server.load("sky-array.png");
|
||||
commands.spawn((
|
||||
Name::new("Render Sprite"),
|
||||
Sprite {
|
||||
@@ -165,9 +172,10 @@ fn prepare_skybox(
|
||||
.expect("Skybox asset image does not exist")
|
||||
.clone();
|
||||
skybox_image.reinterpret_stacked_2d_as_array(skybox_image.height() / skybox_image.width());
|
||||
let mut desc = skybox_image.texture_view_descriptor.unwrap();
|
||||
desc.dimension = Some(TextureViewDimension::Cube);
|
||||
skybox_image.texture_view_descriptor = Some(desc);
|
||||
skybox_image.texture_view_descriptor = Some(TextureViewDescriptor {
|
||||
dimension: Some(TextureViewDimension::Cube),
|
||||
..default()
|
||||
});
|
||||
image_assets.insert(tracer_textures.skybox.id(), skybox_image.clone());
|
||||
}
|
||||
|
||||
|
||||
@@ -36,22 +36,24 @@ impl render_graph::Node for TracerNode {
|
||||
// if the corresponding pipeline has loaded, transition to the next stage
|
||||
match self.state {
|
||||
TracerState::Loading => {
|
||||
let shader_loaded = match pipeline_cache.get_compute_pipeline_state(pipeline.init_pipeline) {
|
||||
CachedPipelineState::Ok(_) => true,
|
||||
match pipeline_cache.get_compute_pipeline_state(pipeline.init_pipeline) {
|
||||
CachedPipelineState::Ok(_) => {
|
||||
self.state = TracerState::Init;
|
||||
}
|
||||
// If the shader hasn't loaded yet, just wait.
|
||||
CachedPipelineState::Err(PipelineCacheError::ShaderNotLoaded(_)) => false,
|
||||
CachedPipelineState::Err(PipelineCacheError::ShaderNotLoaded(_)) => (),
|
||||
CachedPipelineState::Err(err) => {
|
||||
panic!("Initializing assets/{SHADER_ASSET_PATH}:\n{err}")
|
||||
}
|
||||
_ => false,
|
||||
_ => (),
|
||||
};
|
||||
|
||||
let tex = world.resource::<TracerRenderTextures>();
|
||||
let asset_server = world.resource::<AssetServer>();
|
||||
let load_state = asset_server.get_load_state(tex.skybox.id()).unwrap();
|
||||
if load_state.is_loaded() && shader_loaded {
|
||||
self.state = TracerState::Init;
|
||||
}
|
||||
// let tex = world.resource::<TracerRenderTextures>();
|
||||
// let asset_server = world.resource::<AssetServer>();
|
||||
// let load_state = asset_server.get_load_state(tex.skybox.id()).expect();
|
||||
// if load_state.is_loaded() && shader_loaded {
|
||||
// self.state = TracerState::Init;
|
||||
// }
|
||||
}
|
||||
TracerState::Init => {
|
||||
if let CachedPipelineState::Ok(_) = pipeline_cache.get_compute_pipeline_state(pipeline.update_pipeline)
|
||||
|
||||
Reference in New Issue
Block a user