テクスチャ

これらのシェーダは、これまでに説明したテクスチャ空間マッピング機能のいずれかを使用して coord テクスチャ頂点を作成し、この頂点のカラーを作成します。2D マッピングを作成するシェーダは、テクスチャ頂点の x 成分および y 成分のみを使用します。

これらのシェーダのほとんどはカラーを返します。カラーは他のシェーダのスカラー パラメータに割り当てることができるので、マップ スカラーに基づいてカラースプレッドからカラーを選択するブレンドシェーダをこれらのシェーダを組み合わせて使用することができます。この場合は、テクスチャシェーダの減衰パラメータおよびスムージングパラメータと相互作用します。

イメージ ルックアップ

ハーフ オープンの間隔 [0, 1) にあるテクスチャイメージをルック アップします。この間隔の外部にあるポイントは R=G=B=A=0 にマッピングされます。

mib_texture_lookup
    color "mib_texture_lookup" (
        color texture   "tex",
        vector          "coord")
tex
ルック アップするテクスチャ イメージです。
coord
ルック アップする座標です。

これは基本的にシェーダ インタフェース機能の mi_lookup_color_texture ファミリに対する前工程です。

mib_texture_lookup2
    color "mib_texture_lookup2" (
        color texture   "tex",
        scalar          "factor")
  

mib_texture_lookup の代替です。接続されたパラメータとして取得せずに、状態内のテクスチャ座標の最初のセットを使用します。

tex
ルック アップするテクスチャ イメージです。
factor
テクスチャの反復係数です。

フィルタリングによるイメージ ルックアップ

楕円フィルタリングを使用してテクスチャ イメージをルックアップします。

mib_texture_filter_lookup
    color "mib_texture_filter_lookup" (
        color texture   "tex",
        vector          "coord",
        scalar          "eccmax",
        scalar          "maxminor",
        scalar          "disc_r",
        boolean         "bilinear",
        integer         "space",
        shader          "remap")
tex
ルック アップするテクスチャ イメージです。これはテクスチャ シェーダでなく、必ずテクスチャ イメージでなくてはなりません。テクスチャ シェーダを指定すると、フィルタリングせずにテクスチャがルック アップされます。
coord
中央のテクスチャ サンプリング位置です。
eccmax
楕円の使用可能な最大偏心です。
maxminor
楕円の副半径の最大テクスチャ ピクセル数です。
disc_r
画面空間からテクスチャ空間への変換の計算に使用されます。disc_r がゼロまたは未指定の場合は、デフォルトの 0.3 が使用されます。カーブの多いサーフェスを使用したシーンでエイリアシング アーティファクトが発生する場合は、(0.0...0.3] の範囲内の値を選択するとよいでしょう。
bilinear
true に設定した場合は、テクスチャ サンプルのバイリニア補間が有効になります。拡大された領域にブラーを追加して濃淡のむらのあるアーティファクトを回避します。
space
範囲が [0...63] 内のテクスチャ空間インデックスです。
remap
追加のテクスチャ座標の再マッピング用に呼び出されるシェーダです。

シェーダは指定された space パラメータを使用して mi_texture_filter_project を呼び出すことにより、ラスタ空間およびテクスチャ空間の 3 つの対応するポイントを取得します。これらの 3 つのテクスチャ座標は、指定された remap シェーダを呼び出すことによって再マッピングされ、再マッピングに使用する実際のテクスチャ座標は mi_call_shader_x の 4 番目の引数として渡されます(呼び出されるシェーダは mi_call_shader_x の 4 番目の引数を参照するように設計されている必要があります)。再マッピング シェーダは、シェーダ パラメータ内の指定されたテクスチャ座標ベクトルの代わりにこれを使用する必要があります。

フィルタリングによるテクスチャ ルックアップによって必要とされる投影変換行列は、3 つのラスタ空間座標および再マッピングされたテクスチャ空間座標を使用して mi_texture_filter_transform シェーダ インタフェース関数を呼び出すことによって計算されます。行列内の変換コンポーネントは coord に設定されます。投影変換は常に現在のラスタ位置について計算されますが、coord を使用してテクスチャ空間内の楕円を変換することも可能です。バンプマッピングで使用すると便利です。

これは基本的にシェーダインタフェース機能の mi_lookup_filter_color_texture ファミリに対する前工程です。楕円フィルタパラメータ bilinearmib_texture_filter_lookup では false に設定され、circle_radius ではデフォルト値が使用されます。投影行列を正しく計算できない場合や、テクスチャがイメージではなくシェーダである場合や、反射レベルがゼロでない場合は、フィルタリングされていないテクスチャルックアップが使用されます。

チェッカーボード

単位立方体を 8 個の副立方体に分割し、それぞれを個別の RGBA カラーにします。左、下、正面のパーツの幅はプログラム可能なため、このシェーダを使用してストライプや 2D または 3D のチェッカーボードを生成することができます。この機能は、シェーダボール シーンのプレビューにも使用できます。

mib_texture_checkerboard
    color "mib_texture_checkerboard" (
        vector          "coord",
        scalar          "xsize",
        scalar          "ysize",
        scalar          "zsize",
        color           "color000",
        color           "color001",
        color           "color010",
        color           "color011",
        color           "color100",
        color           "color101",
        color           "color110",
        color           "color111")
coord
テクスチャリングする座標です。
*size
立方体の各方向の左(x)半分、下(y)半分、正面(z)半分のフラクションを、[0, 1) の範囲で指定します。
color***
副立方体のカラーを指定します。3 つの桁は X、Y、Z の各座標を表し、000 は正面左下、100 は正面右下、111 は背面右上です。

ポルカ ドット

単位正方形に直径をプログラム可能なディスクを描画し、単位立方体に直径をプログラム可能な球体を描画します。フォアグアラウンド カラーおよびバックグラウン ドカラーはプログラム可能です。

mib_texture_polkadot
    color "mib_texture_polkadot" (
        vector          "coord",
        scalar          "radius",
        color           "fgcolor",
        color           "bgcolor")
  
mib_texture_polkasphere
    color "mib_texture_polkasphere" (
        vector          "coord",
        scalar          "radius",
        color           "fgcolor",
        color           "bgcolor")
coord
テクスチャリングする座標です。
radius
単位正方形または単位立方体のディスクまたは球体の半径です。
fgcolor
ディスクまたは球体のフォアグラウンド カラーです。
bgcolor
ディスクまたは球体のバックグラウンド カラーです。

乱気流

単位立方体に乱気流のスカラー パターンを作成します。1 つ、2 つ、または 3 つすべてのテクスチャ ベクトル コンポーネントが極座標で計算され、球体マッピングが行われます。

mib_texture_turbulence
    scalar "mib_texture_turbulence" (
        vector          "coord",
        scalar          "spacing",
        scalar          "strength",
        scalar          "power",
        integer         "iteration",
        integer         "polar_dim")
coord
テクスチャリングする座標です。
spacing
単位立方体のノイズの密度です。0 の場合は、デフォルトの 1 が使用されます。
strength
ディストーションの強度を表すウェイトです。0 の場合は、デフォルトの 1 が使用されます。
power
乱気流の度合いを指定します。0 の場合は、デフォルトの 1 が使用されます。
iteration
合成された乱気流のパスの数を設定します。それぞれのパスが、power パラメータによって指定された乱気流の減少量に影響します。0 の場合は、デフォルトの 2 が使用されます。最大値 8 です。
polar_dim
合成されたノイズ値を計算する前に極座標に変換すべき、テクスチャ ベクトル成分を数値で指定します。0 の場合は異方性ノイズが作成され、1 の場合はラインが、2 の場合はシリンダが作成されます。

それぞれの振幅をプログラミング可能な、U、V、W の各方向における余弦波を作成します (周波数およびオフセットは、テクスチャ再マッピング ベース シェーダを使用してコントロールします)。結果はグレースケール カラー(R=G=B=A)であり、カラーマップ ベース シェーダを使用して再マッピングできます。振幅の合計を s、オフセットを o とすると、範囲は [o-s ... o+s] になります。

mib_texture_wave
    color "mib_texture_wave" (
        vector          "coord",
        scalar          "amplitude_x",
        scalar          "amplitude_y",
        scalar          "amplitude_z",
        scalar          "offset")
coord
テクスチャリングする座標です。
amplitude_*
生成された波を結果に追加する前に生成された波に乗算する係数です。デフォルトは 0 です(影響なし)。
offset
ウェイト付けされた余弦の合計に定数値を加算します。結果を正の数にシフトする場合などに使用します。

Copyright © 1986-2009 by mental images GmbH