0
私は今GLSL
とCG
を学習し、このコードに遭遇しています:GLSL - `引数でout`
float trace(vec3 origin, vec3 direction, out vec3 p) //<-- What is "out"?
{
float totalDistanceTraveled = 0.0;
for(int i=0; i <64; ++i)
{
p = origin + direction * totalDistanceTraveled;
float distanceFromPointOnRayToClosestObjectInScene = map(p);
totalDistanceTraveled += distanceFromPointOnRayToClosestObjectInScene;
if(distanceFromPointOnRayToClosestObjectInScene < 0.0001)
{
break;
}
if(totalDistanceTraveled > 10000.0)
{
totalDistanceTraveled = 0.0000;
break;
}
}
return totalDistanceTraveled;
}
私はXcode
で使用できるように、私はshaders.metal
にこれらのコードを変換しています。しかし、out
が何であるかわからなくて、Metal
のシェーダでこの機能を使用できるように変更する方法はわかりません。
'var p = ...'とはどのように違うのですか?上記のコードで同様の結果が得られるようです。まだ理解していないことがあると思います。もう少し詳しく説明してください。ありがとう! – sooon
少し読んだ後、 'thread'は処理のために値をスレッドに送りますか? – sooon
これは、関数から複数の値を返す方法です。あなたは距離を返しているので、関数は戻り値を1つしか持てません。交差点を返すには、参照渡し変数を使用する必要があります。 – warrenm