モジュール
std::shaders::color
安定性: 暫定 — 色フィルターです。CSS のフィルター関数、まとめたフィルター、ガウスぼかしを含みます。
Screen::filter と Entity::filter のための色シェーダーです。どの関数も Filter を返します。CSS のフィルター関数は CSS と同じく sRGB の値で計算するので、sepia(1.0) は CSS の sepia(1) と同じ見た目になります。同じ関数の 2 つのフィルターの間をトゥイーンすると、量が動きます。
use std::shaders::color::{NEUTRAL, adjust, blur, grayscale};
/// A dark, slightly harder look.const fn night() -> std::screen::shader::Filter { let mut a = NEUTRAL; a.brightness = 0.6; a.contrast = 1.2; adjust(a)}
screen.filter().change(Some(grayscale(1.0))).apply_animation(tween(ms(800)));screen.entity(BG_BLUR).filter().change(Some(blur(4.0))).apply_animation(tween(ms(500)));screen.filter().change(Some(night())).apply_animation(tween(ms(800)));概要
| アイテム | 種類 | 概要 |
|---|---|---|
Amount | 構造体 | パラメーターが 1 つのフィルターの強さ |
GRAYSCALE … CONTRAST | 定数 | パラメーターが 1 つの 6 つのシェーダー |
grayscale、sepia、saturate、invert、brightness、contrast | 関数 | CSS のフィルター関数 |
HueRotate、HUE_ROTATE、hue_rotate | 構造体、定数、関数 | すべての色相を回す |
Adjust、NEUTRAL、ADJUST、adjust | 構造体、定数、関数 | 7 つのフィルターを 1 パスで |
Blur、BLUR、blur | 構造体、定数、関数 | ガウスぼかし |
構造体:Amount
#[shader_arg]pub struct Amount { pub amount: Decimal,}パラメーターが 1 つのフィルターの強さで、CSS の量と同じです。grayscale、sepia、invert は 0.0 で、saturate、brightness、contrast は 1.0 で効果がなくなります。
定数:GRAYSCALE、SEPIA、SATURATE、INVERT、BRIGHTNESS、CONTRAST
pub const GRAYSCALE: ColorShader<Amount> = asset("shaders/color/grayscale.wgsl");pub const SEPIA: ColorShader<Amount> = asset("shaders/color/sepia.wgsl");pub const SATURATE: ColorShader<Amount> = asset("shaders/color/saturate.wgsl");pub const INVERT: ColorShader<Amount> = asset("shaders/color/invert.wgsl");pub const BRIGHTNESS: ColorShader<Amount> = asset("shaders/color/brightness.wgsl");pub const CONTRAST: ColorShader<Amount> = asset("shaders/color/contrast.wgsl");CSS の grayscale()、sepia()、saturate()、invert()、brightness()、contrast() のシェーダーです。
関数:grayscale、sepia、saturate、invert、brightness、contrast
pub const fn grayscale(amount: Decimal) -> Filterpub const fn sepia(amount: Decimal) -> Filterpub const fn saturate(amount: Decimal) -> Filterpub const fn invert(amount: Decimal) -> Filterpub const fn brightness(amount: Decimal) -> Filterpub const fn contrast(amount: Decimal) -> Filter| 関数 | 効果 |
|---|---|
grayscale(a) | 色を抜く。0.0 でそのまま、1.0 で完全な灰色。a は 0.0..=1.0 に収められる |
sepia(a) | 茶色に色付けする。0.0 でそのまま、1.0 で完全なセピア。0.0..=1.0 に収められる |
saturate(a) | 彩度を拡大縮小する。0.0 で灰色、1.0 でそのまま、1.0 を超えると過飽和 |
invert(a) | 色を反転する(a·(1 − c) + (1 − a)·c)。0.0 でそのまま、1.0 で完全に反転。0.0..=1.0 に収められる |
brightness(a) | 色に a を掛ける。1.0 でそのまま、0.0 で黒 |
contrast(a) | 中間の灰色を中心にコントラストを拡大縮小する(a·c + 0.5 − 0.5·a)。1.0 でそのまま、0.0 で中間の灰色 |
grayscale、sepia、saturate は W3C Filter Effects 仕様の行列を使います。
種別:const fn · ビルトイン:いいえ。
構造体:HueRotate
#[shader_arg]pub struct HueRotate { pub angle: Angle,}HUE_ROTATE の引数で、色相を回す角度です。
定数:HUE_ROTATE
pub const HUE_ROTATE: ColorShader<HueRotate> = asset("shaders/color/hue_rotate.wgsl");CSS の hue-rotate() のシェーダーです。
関数:hue_rotate(angle)
pub const fn hue_rotate(angle: Angle) -> Filter- 戻り値:W3C の hue-rotate 行列で、すべての色相を
angleだけ回すフィルター。 - 種別:
const fn· ビルトイン:いいえ。
構造体:Adjust
#[shader_arg]pub struct Adjust { pub grayscale: Decimal, pub sepia: Decimal, pub saturate: Decimal, pub hue: Angle, pub invert: Decimal, pub brightness: Decimal, pub contrast: Decimal,}adjust が使う 7 つの CSS フィルターの量です。各フィールドの意味は同名の関数が受け取る値と同じで、hue は hue_rotate の角度です。
定数:NEUTRAL
pub const NEUTRAL: Adjust = Adjust { grayscale: 0.0, sepia: 0.0, saturate: 1.0, hue: Angle { degrees: 0.0 }, invert: 0.0, brightness: 1.0, contrast: 1.0,};何も変えない量です。これを出発点にして、必要なものだけを設定してください。
定数:ADJUST
pub const ADJUST: ColorShader<Adjust> = asset("shaders/color/adjust.wgsl");7 つのフィルターを 1 パスで適用します(TyranoScript の [filter])。
関数:adjust(a)
pub const fn adjust(a: Adjust) -> Filter- 戻り値:
aの量を TyranoScript の[filter]の順序(grayscale、sepia、saturate、hue、invert、brightness、contrast)で適用するフィルター。 - 種別:
const fn· ビルトイン:いいえ。
2 つの adjust フィルターの間をトゥイーンするとすべての量が同時に動くので、1 つのフィルターでセピアの回想から暗い夜の場面へフェードできます。
構造体:Blur
#[shader_arg]pub struct Blur { pub radius: Decimal,}BLUR の引数で、ピクセル単位の標準偏差です。0.0 以下ならぼかしません。
定数:BLUR
pub const BLUR: ColorShader<Blur> = asset("shaders/color/blur.wgsl");ガウスぼかしです。
関数:blur(radius)
pub const fn blur(radius: Decimal) -> Filter- 戻り値:CSS の
blur()と同じく、標準偏差radiusピクセルでぼかすフィルター。 - 種別:
const fn· ビルトイン:いいえ。
ぼかしは、radius / 2 ピクセル間隔で並ぶ 13 × 13 の格子点をサンプリングし、各方向に標準偏差の 3 倍まで届きます。
最終更新日 2026年10月29日