Kagari
キーワードを入力してドキュメントを検索します。

モジュール

std::shaders::color

安定性: 暫定 — 色フィルターです。CSS のフィルター関数、まとめたフィルター、ガウスぼかしを含みます。

Screen::filter と Entity::filter のための色シェーダーです。どの関数も Filter を返します。CSS のフィルター関数は CSS と同じく sRGB の値で計算するので、sepia(1.0) は CSS の sepia(1) と同じ見た目になります。同じ関数の 2 つのフィルターの間をトゥイーンすると、量が動きます。

kis
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

kis
#[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

kis
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

kis
pub const fn grayscale(amount: Decimal) -> Filter
pub const fn sepia(amount: Decimal) -> Filter
pub const fn saturate(amount: Decimal) -> Filter
pub const fn invert(amount: Decimal) -> Filter
pub const fn brightness(amount: Decimal) -> Filter
pub 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

kis
#[shader_arg]
pub struct HueRotate {
pub angle: Angle,
}

HUE_ROTATE の引数で、色相を回す角度です。

定数:HUE_ROTATE

kis
pub const HUE_ROTATE: ColorShader<HueRotate> = asset("shaders/color/hue_rotate.wgsl");

CSS の hue-rotate() のシェーダーです。

関数:hue_rotate(angle)

kis
pub const fn hue_rotate(angle: Angle) -> Filter
  • 戻り値:W3C の hue-rotate 行列で、すべての色相を angle だけ回すフィルター。
  • 種別:const fn · ビルトイン:いいえ。

構造体:Adjust

kis
#[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

kis
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

kis
pub const ADJUST: ColorShader<Adjust> = asset("shaders/color/adjust.wgsl");

7 つのフィルターを 1 パスで適用します(TyranoScript の [filter])。

関数:adjust(a)

kis
pub const fn adjust(a: Adjust) -> Filter
  • 戻り値:a の量を TyranoScript の [filter] の順序(grayscale、sepia、saturate、hue、invert、brightness、contrast)で適用するフィルター。
  • 種別:const fn · ビルトイン:いいえ。

2 つの adjust フィルターの間をトゥイーンするとすべての量が同時に動くので、1 つのフィルターでセピアの回想から暗い夜の場面へフェードできます。

構造体:Blur

kis
#[shader_arg]
pub struct Blur {
pub radius: Decimal,
}

BLUR の引数で、ピクセル単位の標準偏差です。0.0 以下ならぼかしません。

定数:BLUR

kis
pub const BLUR: ColorShader<Blur> = asset("shaders/color/blur.wgsl");

ガウスぼかしです。

関数:blur(radius)

kis
pub const fn blur(radius: Decimal) -> Filter
  • 戻り値:CSS の blur() と同じく、標準偏差 radius ピクセルでぼかすフィルター。
  • 種別:const fn · ビルトイン:いいえ。

ぼかしは、radius / 2 ピクセル間隔で並ぶ 13 × 13 の格子点をサンプリングし、各方向に標準偏差の 3 倍まで届きます。

最終更新日 2026年10月29日