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

标签 opengl unity3d glsl

我正在编写一个着色器,我想将 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

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

最佳答案

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

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

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

完整名单:

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

关于opengl - 通过统一属性将 float3/vec3 传递给着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248834/

相关文章:

opengl - 如何在OpenGL中导入对象以及选择什么文件格式?

c# - 当它移动到 Sprite 上时如何使 Sprite 变慢?

c++ - glDisableVertexAttribArray 在一个 Visual Studio 解决方案中工作,但在另一个解决方案中不工作

C++,Qt5 : grabFrameBuffer results are wrong when using multisampling

c++ - 在窗口标题和消息框中显示错误的语言 : win32 application, opengl

c# - 我们可以在 C# 中使用 Struct 作为引用类型吗?

c# - 如何在 Unity 中悬停时将带边框的圆形按钮扩展为带边框的药丸按钮,并且仍然保持边框粗细?

webpack - 在 NextJS 中导入 GLSL 着色器——如何检查 Webpack 加载器是否工作?

opengl - 如果顶点属性与顶点着色器输入不匹配会发生什么

c - OpenGL 是否向后兼容 OpenGL ES?