通过统一属性将 float3 / vec3 传递给着色器

17t*_*ion 6 opengl glsl unity-game-engine

我正在编写一个着色器,我想将 vec3 传递给输入。然而,我能找到的一切总是传递一个浮点数,一个 vec4,纹理或数字范围。是否可以将香草 vec3 统一发送到着色器?

Properties
{
    offset ("formula Offset", Vector) = (0, 0, 0)
}
Run Code Online (Sandbox Code Playgroud)

似乎没有像我希望的那样工作。为了让它编译,我一直在这样做:

Properties
{
    offset ("formula Offset", Vector) = (0, 0, 0, 0)
}

// offset.xyz //Extract relevant data from vector
Run Code Online (Sandbox Code Playgroud)

这只是感觉不对。有没有更好的办法?

Igg*_*ggy 5

看起来当您将属性标记为 Vector 时,它必须具有 4 个组件。甚至文档说:“矢量属性显示为四个数字字段。”

这确实没有看起来那么糟糕,只需将最后一个组件设置为零即可。


请注意,令人讨厌的是,匹配变量不是“向量”,而是“float4”。

完整名单:

/sf/answers/2642478121/