Cleaned up namespaces re: PR comments.

This commit is contained in:
bungoboingo 2022-10-18 15:18:37 -07:00
parent bb8d46a3fd
commit c4565759e4
13 changed files with 158 additions and 161 deletions

View file

@ -4,11 +4,9 @@ mod solid;
use crate::{program, Transformation};
use glow::HasContext;
use iced_graphics::layer::{mesh, mesh::attribute_count_of, Mesh};
use iced_graphics::layer::{mesh, Mesh};
use std::marker::PhantomData;
use crate::triangle::gradient::GradientProgram;
use crate::triangle::solid::SolidProgram;
pub use iced_graphics::triangle::{Mesh2D, Vertex2D};
#[derive(Debug)]
@ -16,13 +14,13 @@ pub(crate) struct Pipeline {
vertex_array: <glow::Context as HasContext>::VertexArray,
vertices: Buffer<Vertex2D>,
indices: Buffer<u32>,
programs: TrianglePrograms,
programs: ProgramList,
}
#[derive(Debug)]
struct TrianglePrograms {
solid: SolidProgram,
gradient: GradientProgram,
struct ProgramList {
solid: solid::Program,
gradient: gradient::Program,
}
impl Pipeline {
@ -65,9 +63,9 @@ impl Pipeline {
vertex_array,
vertices,
indices,
programs: TrianglePrograms {
solid: SolidProgram::new(gl, shader_version),
gradient: GradientProgram::new(gl, shader_version),
programs: ProgramList {
solid: solid::Program::new(gl, shader_version),
gradient: gradient::Program::new(gl, shader_version),
},
}
}
@ -87,7 +85,7 @@ impl Pipeline {
}
//count the total amount of vertices & indices we need to handle
let (total_vertices, total_indices) = attribute_count_of(meshes);
let (total_vertices, total_indices) = mesh::attribute_count_of(meshes);
// Then we ensure the current attribute buffers are big enough, resizing if necessary
unsafe {
@ -171,7 +169,7 @@ impl Pipeline {
/// A simple shader program. Uses [`triangle.vert`] for its vertex shader and only binds position
/// attribute location.
pub(super) fn simple_triangle_program(
pub(super) fn program(
gl: &glow::Context,
shader_version: &program::Version,
fragment_shader: &'static str,

View file

@ -1,25 +1,25 @@
use crate::program::Version;
use crate::triangle::{set_transform, simple_triangle_program};
use crate::triangle;
use glow::{Context, HasContext, NativeProgram};
use iced_graphics::gradient::Gradient;
use iced_graphics::gradient::Linear;
use iced_graphics::Transformation;
#[derive(Debug)]
pub struct GradientProgram {
pub struct Program {
pub program: <Context as HasContext>::Program,
pub uniform_data: GradientUniformData,
pub uniform_data: UniformData,
}
#[derive(Debug)]
pub struct GradientUniformData {
pub struct UniformData {
gradient: Gradient,
transform: Transformation,
uniform_locations: GradientUniformLocations,
uniform_locations: UniformLocations,
}
#[derive(Debug)]
struct GradientUniformLocations {
struct UniformLocations {
gradient_direction_location: <Context as HasContext>::UniformLocation,
color_stops_size_location: <Context as HasContext>::UniformLocation,
//currently the maximum number of stops is 16 due to lack of SSBO in GL2.1
@ -27,9 +27,9 @@ struct GradientUniformLocations {
transform_location: <Context as HasContext>::UniformLocation,
}
impl GradientProgram {
impl Program {
pub fn new(gl: &Context, shader_version: &Version) -> Self {
let program = simple_triangle_program(
let program = triangle::program(
gl,
shader_version,
include_str!("../shader/common/gradient.frag"),
@ -37,7 +37,7 @@ impl GradientProgram {
Self {
program,
uniform_data: GradientUniformData::new(gl, program),
uniform_data: UniformData::new(gl, program),
}
}
@ -48,7 +48,7 @@ impl GradientProgram {
transform: &Transformation,
) {
if transform != &self.uniform_data.transform {
set_transform(
triangle::set_transform(
gl,
self.uniform_data.uniform_locations.transform_location,
*transform,
@ -117,12 +117,11 @@ impl GradientProgram {
transform: &Transformation,
) {
unsafe { gl.use_program(Some(self.program)) }
self.write_uniforms(gl, gradient, transform);
}
}
impl GradientUniformData {
impl UniformData {
fn new(gl: &Context, program: NativeProgram) -> Self {
let gradient_direction_location =
unsafe { gl.get_uniform_location(program, "gradient_direction") }
@ -141,14 +140,14 @@ impl GradientUniformData {
unsafe { gl.get_uniform_location(program, "u_Transform") }
.expect("Gradient - Get u_Transform.");
GradientUniformData {
Self {
gradient: Gradient::Linear(Linear {
start: Default::default(),
end: Default::default(),
color_stops: vec![],
}),
transform: Transformation::identity(),
uniform_locations: GradientUniformLocations {
uniform_locations: UniformLocations {
gradient_direction_location,
color_stops_size_location,
color_stops_location,

View file

@ -1,24 +1,23 @@
use crate::program::Version;
use crate::triangle::{set_transform, simple_triangle_program};
use crate::Color;
use crate::{triangle, Color};
use glow::{Context, HasContext, NativeProgram};
use iced_graphics::Transformation;
#[derive(Debug)]
pub struct SolidProgram {
pub struct Program {
program: <Context as HasContext>::Program,
uniform_data: SolidUniformData,
uniform_data: UniformData,
}
#[derive(Debug)]
struct SolidUniformData {
struct UniformData {
pub color: Color,
pub color_location: <Context as HasContext>::UniformLocation,
pub transform: Transformation,
pub transform_location: <Context as HasContext>::UniformLocation,
}
impl SolidUniformData {
impl UniformData {
fn new(gl: &Context, program: NativeProgram) -> Self {
Self {
color: Color::TRANSPARENT,
@ -35,9 +34,9 @@ impl SolidUniformData {
}
}
impl SolidProgram {
impl Program {
pub fn new(gl: &Context, shader_version: &Version) -> Self {
let program = simple_triangle_program(
let program = triangle::program(
gl,
shader_version,
include_str!("../shader/common/triangle.frag"),
@ -45,7 +44,7 @@ impl SolidProgram {
Self {
program,
uniform_data: SolidUniformData::new(gl, program),
uniform_data: UniformData::new(gl, program),
}
}
@ -56,7 +55,11 @@ impl SolidProgram {
transform: &Transformation,
) {
if transform != &self.uniform_data.transform {
set_transform(gl, self.uniform_data.transform_location, *transform)
triangle::set_transform(
gl,
self.uniform_data.transform_location,
*transform,
)
}
if color != &self.uniform_data.color {