Add support for single float uniforms to `pathfinder_gpu`
This commit is contained in:
parent
9260dbce93
commit
fa54868eb1
|
@ -153,6 +153,9 @@ impl GLDevice {
|
||||||
fn set_uniform(&self, uniform: &GLUniform, data: &UniformData) {
|
fn set_uniform(&self, uniform: &GLUniform, data: &UniformData) {
|
||||||
unsafe {
|
unsafe {
|
||||||
match *data {
|
match *data {
|
||||||
|
UniformData::Float(value) => {
|
||||||
|
gl::Uniform1f(uniform.location, value); ck();
|
||||||
|
}
|
||||||
UniformData::Int(value) => {
|
UniformData::Int(value) => {
|
||||||
gl::Uniform1i(uniform.location, value); ck();
|
gl::Uniform1i(uniform.location, value); ck();
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,6 +151,7 @@ pub enum ShaderKind {
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
#[derive(Clone, Copy)]
|
||||||
pub enum UniformData {
|
pub enum UniformData {
|
||||||
|
Float(f32),
|
||||||
Int(i32),
|
Int(i32),
|
||||||
Mat2(F32x4),
|
Mat2(F32x4),
|
||||||
Mat4([F32x4; 4]),
|
Mat4([F32x4; 4]),
|
||||||
|
|
|
@ -797,6 +797,9 @@ impl MetalDevice {
|
||||||
for &(_, uniform_data) in render_state.uniforms.iter() {
|
for &(_, uniform_data) in render_state.uniforms.iter() {
|
||||||
let start_index = uniform_buffer_data.len();
|
let start_index = uniform_buffer_data.len();
|
||||||
match uniform_data {
|
match uniform_data {
|
||||||
|
UniformData::Float(value) => {
|
||||||
|
uniform_buffer_data.write_f32::<NativeEndian>(value).unwrap()
|
||||||
|
}
|
||||||
UniformData::Int(value) => {
|
UniformData::Int(value) => {
|
||||||
uniform_buffer_data.write_i32::<NativeEndian>(value).unwrap()
|
uniform_buffer_data.write_i32::<NativeEndian>(value).unwrap()
|
||||||
}
|
}
|
||||||
|
@ -1145,6 +1148,9 @@ impl UniformDataExt for UniformData {
|
||||||
unsafe {
|
unsafe {
|
||||||
match *self {
|
match *self {
|
||||||
UniformData::TextureUnit(_) => None,
|
UniformData::TextureUnit(_) => None,
|
||||||
|
UniformData::Float(ref data) => {
|
||||||
|
Some(slice::from_raw_parts(data as *const f32 as *const u8, 4 * 1))
|
||||||
|
}
|
||||||
UniformData::Int(ref data) => {
|
UniformData::Int(ref data) => {
|
||||||
Some(slice::from_raw_parts(data as *const i32 as *const u8, 4 * 1))
|
Some(slice::from_raw_parts(data as *const i32 as *const u8, 4 * 1))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue