【问题标题】:Passing a float3 / vec3 to a shader via unity properties通过统一属性将 float3 / vec3 传递给着色器
【发布时间】:2016-05-16 07:31:41
【问题描述】:

我正在编写一个着色器,我想将一个 vec3 传递给输入。 但是我能找到的所有东西总是传递一个单一的浮点数、vec4、纹理或数字范围。是否可以将 vanilla vec3 统一发送到着色器?

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

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

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

// offset.xyz //Extract relevant data from vector

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

【问题讨论】:

    标签: opengl unity3d glsl


    【解决方案1】:

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

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


    请注意,匹配变量不是“vector”,而是“float4”。

    完整列表:

    https://stackoverflow.com/a/37749687/294884

    【讨论】:

    • 我发现了一个好处,当我在着色器中将其声明为制服时,它看起来会更好一些,我只是放置了 vec3,它忽略了额外的值我还找到了 Shader.setGlobal 方法包含矩阵和 Vector3
    猜你喜欢
    • 2019-01-24
    • 2017-01-24
    • 2019-09-11
    • 2013-07-26
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多