MFGドキュメント
Home
Getting Started
Reference
  • ja-JP
  • en-US
Home
Getting Started
Reference
  • ja-JP
  • en-US
  • MEP 17: スカラーの繰り返しでベクトルを作る

MEP 17: スカラーの繰り返しでベクトルを作る

  • Created: 2024-04-21 10:07:01

Metalなどでfloat4(0.0)などと書くものに相当する事をやりたい。

Metal

float4(0.0)

GLSL

vec4(0.0)

Swift

[Int](repeating: 0.0, count: 4) 

R

rep関数。rep function - RDocumentation

rep(0.0, times=4) 

Rust

Rustにはセミコロンという特殊なシンタックスがある。

[0.0; 4]

numpy

numpyはzeros、oneと専用の命令があり、またfullという一般のもある。

np.zeros(5)
np.full(5, 0.0)

数字の所はshape(多次元も指定出来る)。

MFGの事情

float4などは、既に型がf32などとサイズをつける事にしているので出来ない。 vec4はやっても良いが、スカラー以外のものをサポートする理由が無く、スカラーだけだとややこしさもあるかもしれない。 シェーダープログラマは、vec3(1, 2, 3)などが出来ないのはなぜ?となるだろう。 サポートしてもいいが、[1, 2, 3]と完全に同じ挙動になってしまうので、あまり気が乗らない。 まぁvec3(1)とやるもので、複数いれるものは単にタプルとせい、とドキュメントに書けば十分かもしれない。

個人的にはRに慣れているので、rep3とrep4がいいんじゃないか、という気もする。rep3(0.0)、rep4(0.1)は十分に分かりやすい。 Swift風にrepeat(0.0, times=3)でもいいんだが、型チェックの簡便さから、出来たら3とか4の次元は関数名に入れたいし、ちょっと野暮ったい気もする。


暫定的にvec3、vec4で実装してみる。

最終更新: 2025/11/20 15:14
Contributors: Kazuma Arino