从函数返回一个结构

时间:2016-07-18 16:53:25

标签: unity3d cg

cg中的结构体是否可以用于除声明管道语义之外的任何内容?

我正在使用Unity3D并且此代码在'隐式/玫瑰'中抛出“Shader错误”:在第48行(在d3d11上)重新定义'PetalData'“。

我怎样才能让它发挥作用?我错过了什么,或者它只是Unity不支持的用法?

struct PetalData {
    half radius;
    half2 center;
}

PetalData GetPetalData (half petalIndex, half totalPetals) {
    half p = petalIndex/totalPetals;
    PetalData petal;
    petal.radius = 0.03 * SShape(p) + 0.01;
    petal.center = sqrt(p) * AngleToDir(petalIndex);
    return petal;
}

half PetalField (half2 topology, PetalData petal) {
    half d = distance(topology, petal.center);
    d /= petal.radius;
    d = 1 - d;
    d *= _Ramp;
    return d;
}

1 个答案:

答案 0 :(得分:2)

如果我正确地读了这个,我相信你的结构定义需要一个终止分号。

struct PetalData {
    half radius;
    half2 center;
};