pub struct ShaderFile {
pub v_src: String,
pub f_src: String,
pub is_compute: bool,
}Expand description
A shader loaded from disk (or cache), ready to compile.
§Loading
ⓘ
use optic_render::asset::{ShaderFile, ShaderType};
let sf = ShaderFile::from_disk("shaders/example.glsl", ShaderType::Pipeline)?;
let shader = sf.compile()?; // returns a Shader handle§Shader format
Pipeline shaders use comment markers to separate vertex and fragment stages
within a single .glsl file:
// V
void main() {
gl_Position = vec4(0.0);
}
// F
void main() {
outColor = vec4(1.0);
}Fields§
§v_src: String§f_src: String§is_compute: boolImplementations§
Source§impl ShaderFile
impl ShaderFile
Sourcepub fn from_src(src: &str, typ: ShaderType) -> OpticResult<Self>
pub fn from_src(src: &str, typ: ShaderType) -> OpticResult<Self>
Creates a ShaderFile by parsing a combined GLSL source string.
Sourcepub fn from_vert_frag(v_src: &str, f_src: &str) -> Self
pub fn from_vert_frag(v_src: &str, f_src: &str) -> Self
Creates a pipeline shader from separate vertex and fragment source strings.
Sourcepub fn compile(&self) -> OpticResult<Shader>
pub fn compile(&self) -> OpticResult<Shader>
Compiles this shader and returns a Shader handle.
Source§impl ShaderFile
impl ShaderFile
Sourcepub fn from_disk(path: &str, typ: ShaderType) -> OpticResult<Self>
pub fn from_disk(path: &str, typ: ShaderType) -> OpticResult<Self>
Loads a shader from disk, caching it for release builds.
Source§impl ShaderFile
impl ShaderFile
Sourcepub fn save_cached(&self, path: &str) -> OpticResult<()>
pub fn save_cached(&self, path: &str) -> OpticResult<()>
Saves this shader to a binary cache file.
Source§impl ShaderFile
impl ShaderFile
Sourcepub fn default_3d() -> OpticResult<Self>
pub fn default_3d() -> OpticResult<Self>
Loads the default 3D pipeline shader from optic/assets/shdr/fallback3d.glsl.
Sourcepub fn default_2d() -> OpticResult<Self>
pub fn default_2d() -> OpticResult<Self>
Loads the default 2D pipeline shader from optic/assets/shdr/fallback2d.glsl.
Auto Trait Implementations§
impl Freeze for ShaderFile
impl RefUnwindSafe for ShaderFile
impl Send for ShaderFile
impl Sync for ShaderFile
impl Unpin for ShaderFile
impl UnsafeUnpin for ShaderFile
impl UnwindSafe for ShaderFile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more