Polygon ノード
説明
入力 UV に基づいて、入力 Width および Height に指定されたサイズの通常のポリゴン形状を生成します。ポリゴンの辺の数は入力 Sides で指定します。Tiling And Offset ノード を接続すると、生成した形状のオフセットやタイル化が可能です。UV 空間内での形状のオフセット機能を維持するため、タイル化の際に形状は自動的には反復されません。ポリゴンを繰り返す効果を作り出すには、まず Fraction ノード を使って入力を接続してください。
注意: このノード は、Fragment (フラグメント) シェーダーステージ でのみ使用可能です。
ポート
Name | Direction | タイプ | バインディング | 説明 |
---|---|---|---|---|
UV | 入力 | Vector 2 | UV | 入力 UV 値 |
Sides | 入力 | Vector 1 | なし | 辺の数 |
Width | 入力 | Vector 1 | なし | ポリゴンの幅 |
Height | 入力 | Vector 1 | なし | ポリゴンの高さ |
Out | 出力 | Vector 1 | なし | 出力値 |
生成されるコードの例
以下のサンプルコードは、このノードの出力の一例を示したものです。
void Unity_Polygon_float(float2 UV, float Sides, float Width, float Height, out float Out)
{
float pi = 3.14159265359;
float aWidth = Width * cos(pi / Sides);
float aHeight = Height * cos(pi / Sides);
float2 uv = (UV * 2 - 1) / float2(aWidth, aHeight);
uv.y *= -1;
float pCoord = atan2(uv.x, uv.y);
float r = 2 * pi / Sides;
float distance = cos(floor(0.5 + pCoord / r) * r - pCoord) * length(uv);
Out = saturate((1 - distance) / fwidth(distance));
}