问题标签 [shader-graph]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 需要帮助将自定义着色器转换为 URP
在过去的几天里,我一直在关注 Sebastian Lague 关于程序生成的视频。由于我的项目基于 URP,并且负责在网格上渲染纹理的自定义着色器只是为 SRP 编写的,因此我必须进行转换。我一直在修补着色器图,并找到了一种可能的转换解决方案。但是,色调和纹理都没有被渲染。我将添加两个代码:一个原始代码和尝试覆盖。
编辑:我从修修补补中得到的唯一一件事是,当我在着色图中手动设置“层”值时,它允许我去更改所述层的基色。尽管如此,它只影响一个单层,不应用任何纹理,并且只能在全局空间中的某个特定值下工作
这是设置变量的代码。两者相同:
原始着色器:
尝试加上着色器图:
我连续几天在这里撞墙。所以非常感谢帮助
unity3d - Unity:在 UI 画布图像的着色器中访问精灵二级纹理
在 Unity 中,我有一个精灵,其中包含通常的精灵和在精灵编辑器中定义为次要纹理_MainTex
的附加纹理。_inner
在 shaderGraph 中,当我想访问用于精灵渲染器的材质的辅助纹理时,我可以像_inner
在Texture2D
属性中一样输入“ref”,就像一个魅力一样。
但是,当我尝试使用用于 UI 画布图像(游戏中 UI)的着色器对同一个精灵执行相同操作时,着色器似乎没有找到辅助纹理(因此相同的着色器适用于我的 SpriteRenderer,但没有'不在我的 UI 图像渲染器上)。
难道我做错了什么?知道什么吗?
unity3d - 着色器图正在从 texture2D 中截断第一行像素
我有一个用于高光和轮廓的着色器,它工作得很好,除了一种小但非常烦人的方式:
https://i.stack.imgur.com/vfsNx.png
https://i.stack.imgur.com/N3mG6.png
我的精灵被划分为“玩家”、“头发”、“服装”和“武器”的独立游戏对象,它们都是可交换和动画的。轮廓/填充材质也在其自己的 Gameobject 上,着色器使用“玩家”Sprite Renderer 作为其 _mainTex 并将 Sprite 设置在其自己的 Sprite Renderer 上。
着色器当前使用“头发”(以及最终的“装备”和“武器”)Sprite Renderer 纹理作为着色器图中名为 _Hair 的辅助纹理,以创建头发和身体的复合高亮/轮廓图像。
它工作得很好......除了顶线,而且总是恰好顶线的像素被切断。
我知道这不是精灵表或任何导入设置问题,因为其他着色器在各个部分上工作正常,而且我没有使用精灵图集或任何东西。我认为这一定是我设置着色器图的方式有问题......
https://i.stack.imgur.com/5LZHZ.png
...我从“头发”精灵渲染器访问纹理的方式或我设置纹理的方式:
}
我已经坚持了两天,所以我非常感谢任何想法,而且我仍然是着色器的初学者;我以前没有将它们用于这样的事情。这也是一个相当困难的标题问题,因此也欢迎任何关于更好标题的建议!
unity3d - 在着色器图中使用渐变填充不规则形状
我正在使用着色器图形 Unity 2D 中的自定义着色器处理自定义材质(我认为这个问题可能会扩展到 Unity3D)。这个着色器的基础是以独特的方式用渐变填充不规则形状。如果对于对象中的每个 x 坐标,它们对应的顶部 y 坐标可以渐变到其底部 y 坐标,我会喜欢它。(我附上了一张图片来更清楚地展示这一点)我可以用简单的 y 坐标渐变填充任何形状,这在矩形上效果很好,但是,对于任何其他形状,看起来渐变只是被形状。
到目前为止,我一直无法自己解决这个问题,因为我对统一还很陌生,经过大量搜索后我找不到任何匹配的结果。我在另一个堆栈溢出页面(here)上读到,答案说他们需要使用 UV 贴图。我不确定我的问题和他们的问题有多相似,也不知道如何通过 UV 映射完成我想要的。任何帮助表示赞赏:)
unity3d - Unity 无法在运行时通过脚本更改材质
目标
我创建了一个在材质“TestMaterial”中使用的着色器图。我有一个带有默认材质属性的精灵渲染器组件的游戏对象。
在运行时,当用户单击一个简单的按钮时,我想用我的新材质“TestMaterial”更改我的游戏对象 > Sprite 渲染器 > 材质属性“默认”。
语境
我使用通用渲染管道和 Unity 2019.4.12.f1。在我使用功能编辑 > 渲染管道 > 通用渲染管道 > 2D 渲染器 > 将项目更新为 2d 渲染器之前,我的代码运行良好。
我所做的测试 我 的“TestMaterial”在编辑器中运行良好,当我的游戏对象直接使用此材料时,在运行时也是如此。“TestMaterial”只有在我更新脚本中的材料时才起作用,我的游戏对象保留旧的默认材料。
代码
截图 Unity 编辑器