Rust crate for creating filters with DirectX shaders. Includes Scale, Color conversion using DirectX api.

Overview

DxFilter

docs.rs Crates.io Crates.io

Scale and ColorConversion done with DirectX filters. You can also create your own filters with the provided api.

Crate contains various tools to make these features possible.

  • generate_shader! and compile_shader! macros to write shaders that compile at compile time
  • various built filters for converting and scaling from RGB to YUV or NV12
  • DxFilter interface for writing custom filters
  • utils like create_device_context , create_input_tex, create_output_tex for easier setup.
  • utils like AdapterFactory, Adapter, TextureReader imported from win_desktop_duplication.

For example usage, look at examples/rgb_to_nv12.rs

Usage

// for more detailed example see examples/rgb_to_nv12.rs
fn main() {
    // {...}

    //                                    Texture    Texture    directx device
    let filter = ConvertARGBToNV12::new(&input_tex, &output_tex, &device).unwrap();
    //                directx device
    filter.apply_filter(&context).unwrap();

    // { ... }
}

AvailableFilters

  • ARGB to AYUV
  • ARGB to NV12
  • ARGB or AYUV scale only
  • ARGB to YUV planar
  • ARGB to YUV420 planar
  • ARGB16 to Y410
  • ARGB16 to YUV444 10bit planar
  • ARGB16 to YUV420 10bit planar
You might also like...
Another attempt at creating a wrapper for fastcdc in node.js

Another attempt at creating a wrapper for fastcdc in node.js. This time using wasmbindgen instead of neon.

A proc macro for creating compile-time checked CSS class sets, in the style of classNames

semester Semester is a declarative CSS conditional class name joiner, in the style of React's classnames. It's intended for use in web frameworks (lik

Concrete is a simple programming language specifically crafted for creating highly scalable systems that are reliable, efficient, and easy to maintain.
Concrete is a simple programming language specifically crafted for creating highly scalable systems that are reliable, efficient, and easy to maintain.

The Concrete Programming Language Most ideas come from previous ideas - Alan C. Kay, The Early History Of Smalltalk In the realm of low-level programm

Interact with the crate's API

cargo-api Interact with the crate's API Documentation Installation Getting Started Reference FAQ Contribute CHANGELOG Install Download a pre-built bin

🚧 WIP: API client crate for Bambu Lab printers

Bambulab API 🚧 WORK IN PROGRESS 🚧 This crate is still in development and not ready for production use. Breaking changes may occur at any time. bambu

This crate allows you to safely initialize Dynamically Sized Types (DST) using only safe Rust.

This crate allows you to safely initialize Dynamically Sized Types (DST) using only safe Rust.

Bindings to the Tauri API for projects using wasm-bindgen

tauri-sys Raw bindings to the Tauri API for projects using wasm-bindgen Installation This crate is not yet published to crates.io, so you need to use

Garden monitoring system using m328p Arduino Uno boards. 100% Rust [no_std] using the avr hardware abstraction layer (avr-hal)

uno-revive-rs References Arduino Garden Controller Roadmap uno-revive-rs: roadmap Components & Controllers 1-2 Uno R3 m328p Soil moisture sensor: m328

Rust crate which provides direct access to files within a Debian archive

debarchive This Rust crate provides direct access to files within a Debian archive. This crate is used by our debrep utility to generate the Packages

Owner
null
Stdto provides a set of functional traits for conversion between various data representations.

Stdto stdto provides a set of functional traits for conversion between various data representations. | Examples | Docs | Latest Note | stdto = "0.13.0

Doha Lee 5 Dec 21, 2022
A lean, minimal, and stable set of types for color interoperation between crates in Rust.

This library provides a lean, minimal, and stable set of types for color interoperation between crates in Rust. Its goal is to serve the same function that mint provides for (linear algebra) math types.

Gray Olson 16 Sep 21, 2022
An opinionated, practical color management library for games and graphics.

colstodian An opinionated color management library built on top of kolor. Introduction colstodian is a practical color management library for games an

Gray Olson 27 Dec 7, 2022
Simple color picker that lets the user create harmonic palettes with ease.

epick Simple color picker that lets the user create harmonic palettes with ease. Get it You can checkout the web demo over here or get a native binary

Wojciech Kępka 101 Dec 19, 2022
"Philips Ambilight for desktops". A tool to generate color palettes from your desktop wallpaper and send them to Home Assistant.

Desktop Dye DesktopDye is an open source project written in Rust that allows users to have their lights paired with Home Assistant adjust to the most

Jeroen Meijer (Jay) 7 Feb 22, 2023
A playground for creating generative art, buit with Rust🦀 and WASM🕸

Genny A playground for creating generative art, buit with Rust ?? and WASM ?? About This is a simple playground that allows me to explore ideas around

João Paiva 3 Mar 12, 2022
A swiss army knife for creating binary modules for Garry's Mod in Rust.

A swiss army knife for creating binary modules for Garry's Mod in Rust.

William 38 Dec 24, 2022
Mononym is a library for creating unique type-level names for each value in Rust.

Mononym is a library for creating unique type-level names for each value in Rust.

MaybeVoid 52 Dec 16, 2022
Creating CLI's just got a whole lot better.

Staq Creating CLI's just got a whole lot better. Don't worry about CLI colouring, networking, Size of Executables, Speed ever again Have any doubts? R

null 12 Jun 6, 2021
🦊 An interactive cli for creating conventional commits.

?? koji An interactive cli for creating conventional commits, built on cocogitto and inspired by cz-cli. Installation Not yet. ?? Usage Using koji # C

Danny 40 Dec 8, 2022