summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-09 20:09:35 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-09 20:23:13 -0700
commitbbe9d5993bb922ad6b33a21c3557143cecaf960d (patch)
tree387488a0a6b35aa5ba1fef1adcdc400d0f4935b6 /src
parent677b697eb18b9abb252eacff320aa48314075a0e (diff)
abstract over bundled assets
yay build script stuff :)

Force-Push: yes
Change-Id: I694651febb02f42dac904f0dfbf4089c33ef937e
Diffstat (limited to 'src')
-rw-r--r--src/files/obj.rs4
-rw-r--r--src/files/png.rs4
-rw-r--r--src/graphics/render.rs7
-rw-r--r--src/main.rs9
4 files changed, 12 insertions, 12 deletions
diff --git a/src/files/obj.rs b/src/files/obj.rs
index af2ce03..3ccc2ec 100644
--- a/src/files/obj.rs
+++ b/src/files/obj.rs
@@ -9,9 +9,7 @@ use std::io::Cursor;
 use tobj::{ load_obj_buf, LoadOptions };
 
 
-pub fn load_obj(permanent: &Permanent) -> Result<Model> {
-  let obj = include_bytes!("../../models/teapot.obj");
-
+pub fn load_obj(obj: &[u8], permanent: &Permanent) -> Result<Model> {
   let load_options = LoadOptions {
     single_index: true,
     triangulate: true,
diff --git a/src/files/png.rs b/src/files/png.rs
index c164613..ce24292 100644
--- a/src/files/png.rs
+++ b/src/files/png.rs
@@ -7,9 +7,7 @@ use std::io::Cursor;
 use png::Decoder;
 
 
-pub fn load_png(permanent: &Permanent) -> Result<(Texture, u32)> {
-  let png = include_bytes!("../../textures/forest_leaves_04_diff.png");
-
+pub fn load_png(png: &[u8], permanent: &Permanent) -> Result<(Texture, u32)> {
   let decoder = Decoder::new(Cursor::new(png));
   let mut reader = decoder.read_info()?;
 
diff --git a/src/graphics/render.rs b/src/graphics/render.rs
index 0b4a12a..7318574 100644
--- a/src/graphics/render.rs
+++ b/src/graphics/render.rs
@@ -1,5 +1,6 @@
 #![deny(unsafe_code)]
 use crate::error::*;
+use crate::assets::asset;
 use crate::graphics::{ Permanent, ForReinit, WindowDressing, Model, Texture };
 use crate::shader_data::{ Vertex, UniformBlock, VertexPushBlock };
 
@@ -260,10 +261,8 @@ fn init_pipeline(device: &Device,
                  render_pass: &vk::RenderPass)
     -> Result<(vk::PipelineLayout, vk::Pipeline)>
 {
-  let vertex_binary = include_bytes!(
-          concat!(env!("OUT_DIR"), "/shader.vert.spv"));
-  let fragment_binary = include_bytes!(
-          concat!(env!("OUT_DIR"), "/shader.frag.spv"));
+  let vertex_binary = asset("shaders/shader.vert.spv")?;
+  let fragment_binary = asset("shaders/shader.frag.spv")?;
 
   let vertex_module = Permanent::load_spirv_shader_module(
           device, vertex_binary)?;
diff --git a/src/main.rs b/src/main.rs
index b4f7970..607b0d8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,6 @@
 #![deny(unsafe_code)]
 use crate::error::*;
+use crate::assets::asset;
 use crate::graphics::{ Permanent, ForReinit, Render, Model, Texture };
 use crate::graphics::scene::generate_scene_commands;
 use crate::graphics::window_dressing::{
@@ -22,6 +23,7 @@ use winit::event::WindowEvent;
 use winit::event_loop::{ ActiveEventLoop, EventLoop };
 use winit::window::WindowId;
 
+mod assets { include!(concat!(env!("OUT_DIR"), "/assets.rs")); }
 mod error;
 mod files;
 mod graphics;
@@ -68,14 +70,17 @@ impl Surreality {
     let (permanent, for_reinit, enable_anisotropy, enable_swapchain)
         = Permanent::new(event_loop)?;
 
-    let (texture, mip_count) = load_png(&permanent)?;
+    let png = asset("textures/forest_leaves_04_diff.png")?;
+    let (texture, mip_count) = load_png(png, &permanent)?;
 
     if enable_swapchain.0 {
       let window_dressing = WindowDressing::new(&permanent, &for_reinit,
                                                 enable_anisotropy, mip_count)?;
       let mut render = Render::new(&permanent, &for_reinit, &window_dressing,
                                    &texture)?;
-      let model = load_obj(&permanent)?;
+
+      let obj = asset("models/teapot.obj")?;
+      let model = load_obj(obj, &permanent)?;
       render.set_model(model);
 
       *self.window_dressing.get_mut() = Some(window_dressing);