GLSL~5.5 ベクトル要素

2012. 02. 02
5.5 ベクトル要素

ベクトルの要素名は一文字で示されます。

表記上の利便性のため、いくつかの文字は位置、色、またはテクスチャ座標のベクトルの一般的な用法に基づいて、各要素が関連付けされています。

ベクトルの個々の要素は、変数名の後ろにピリオド『.』を打ち、要素名を指定することで選択することができます。

サポートされる要素名を以下に示します。

{x, y, z, w}座標点や法線を表すベクトルにアクセスする場合に使用
{r, g, b, a}色を表すベクトルにアクセスする場合に使用
{s, t, p, q}テクスチャ座標を表すベクトルにアクセスする場合に使用

例えば要素名x、r、sは、ベクトルの同じ(最初の)要素を示す同義語です。

テクスチャの第三要素はOpenGL ESではrになりますが、色のr(red)との混同を避けるためpに改名していることに注意してください。

ベクトル型に対して宣言された要素数を超えてアクセスするとエラーになります。

vec2 pos;
pos.x    // 有効
pos.z// 不正

要素選択の構文は、ピリオド(.)の後に(同じ名前のセットからの)名前を追加することによって複数の要素を選択することができます。

vec4 v4;
v4.rgba;    // v4をvec4として使用した場合と同じ
v4.rgb;// vec3と同様
v4.b;// floatと同様
v4.xy;// vec2と同様
v4.xgba;// 不正(同じセットからの要素名ではない)

4要素より多く選択することはできません。

vec4 v4;
v4.xyzw;    // vec4
v4.xyzwxy;// 6つの要素を持っているので不正
(v4.xyzwxy).xy;// 中間値が6つの要素を持っているので不正
 
vec2 v2;
v2.xyxy;// 有効。vec4に評価されます

要素の順序は様々な並べ替えや繰り返しをすることができます。

vec4 pos = vec4(1.0, 2.0, 3.0, 4.0);
vec4 swiz= pos.wzyx;    // swiz = (4.0, 3.0, 2.0, 1.0)
vec4 dup = pos.xxyy;// dup = (1.0, 1.0, 2.0, 2.0)

この表記法はコンストラクタ構文よりも簡単です。

右辺値を作る為に、ベクトルの右辺値の結果を式に適用することができます。

要素グループの表記は、式の左辺で起こすことができます。

vec4 pos = vec4(1.0, 2.0, 3.0, 4.0);
pos.xw = vec2(5.0, 6.0);    // pos = (5.0, 2.0, 3.0, 6.0)
pos.wx = vec2(7.0, 8.0);// pos = (8.0, 2.0, 3.0, 7.0)
pos.xx = vec2(3.0, 4.0);// 不正。xが2回使用されている
pos.xy = vec3(1.0, 2.0, 3.0);// 不正。vec2とvec3間で不整合

左辺値を作る為に、並べ替えはベクトル型の左辺値に適用し、重複する要素が含まれない必要があり、そしてスカラーまたはベクトル型の左辺値の結果は指定された要素数に依存します。

配列の添字構文は、数値インデックスを提供する為にベクトルに適用することができます。

vec4    pos;

pos[2]はposの第三要素を指し、pos.zに相当します。

これはベクトルに変数インデックスを付けるだけでなく、要素へのアクセスの汎用的な方法が可能になります。

任意の整数式を添字として使用することができます。

最初の要素はインデックス0になります。

ベクトルからの読み込みやベクトルへの書き込みに使用する定数整数式の値が、負またはベクトルのサイズ以上の場合は不正になります。

非定数式でインデックスを作成する際、インデックスが負またはベクトルのサイズ以上の場合、動作は未定義です。

スカラーは単一要素のベクトルとはみなされないため、スカラーに対して要素選択を使用することは不正になることに注意してください。



参考文献

The OpenGL ES Shading Language 1.0.17

辞書にない英語 - livedoor Wiki(ウィキ)/swizzle






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR