问题标签 [unity3d-shaders]
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.
android - 为什么统一 2020.1.10 在 Oculus 的 Android 版本上冻结?
我得到了其中的一些:Assets/PostProcessing/Resources/Shaders/MotionBlur.cginc(90) 中未声明的标识符“sampler_CameraDepthTexture”(在 gles3 上)我在 ???.cginc 中的不同行号处得到了其中的一些,并且位于不知从何开始。这些是否会导致构建过程中出现问题?如果需要,我可以提供更多信息。我不想用模糊的音量来填充这篇文章。编辑/首选项/外部工具中没有显示错误。谢谢你。
unity3d - Unity3d Shader Z 测试问题,ZTest 更大但落后
我对 Unity 中的着色器比较陌生,我正在尝试创建一些东西,但我所有的尝试都失败了。场景是这样的,我有以下对象:A,B,C。
A 是精灵,B 是 Textmesh(不是 GUI),C 是深度蒙版矩形。
我想获取文本并将其滚动到“A”精灵上,但是由于仅在精灵上滚动文本会导致文本超出精灵边界,因此我想创建一个仅在其上渲染时的深度蒙版遮罩文本将出现,并将该遮罩放置在精灵上。
这工作得很好,我把精灵(A)然后是文本(B),然后我将 ZTest Greater 添加到它的着色器,然后(C)深度蒙版,它基本上是一个带有以下着色器的矩形:
标签 {“队列" = "透明"
ZTest LEqual
ZWrite On
ColorMask 0
Pass {}
这使得文本只出现在蒙版的矩形上,一旦滚动出来,它就会消失,这很棒。
现在对于我的问题,我有另一个对象,它可以出现在一切之上,并且应该使一切都消失(所以我使用了如上所述的深度蒙版),但是因为我已经将文本定义为 ZTest Greater ,当该对象过去时,除了文本之外的所有内容都会正确消失。
我的问题如下,有没有办法区分两个掩码,以便文本出现在一个(通过 Ztest),但从另一个消失(未通过 Ztest?)。
附上描述我的问题的屏幕截图,如您所见,红色蒙版仅显示部分文本(这很好),但需要作为屏幕末尾的蓝色蒙版不适用于文本,因为文本是红色遮罩所需的 ZTest 更大。
所以我真正需要的是一种蓝色蒙版覆盖文本但红色蒙版显示它的方法。
关于着色器的测试,如果您可以分配特定对象以便它们与其他对象的行为不同,有什么想法吗?(或类似的解决方案)
webgl - 为什么 Unity 的 WebGL 构建不允许我的着色器使用条件开关来渲染光线行进对象
我一直在尝试制作一个着色器,它可以让光线行进在没有重型显卡的设备上发生。我正在使用 unity3d,但在一个问题上停留了大约 2 周。
我现在拥有的着色器非常简单,并且可以在不同平台上提供良好的 fps。它甚至在 WebGL 中运行得非常快(这一直是一场噩梦),但最后一个难题是允许用户选择不同的光线行进形状。
我一辈子都想不通为什么,第 94 行的简单开关在 WebGL 中不起作用。
我试过了:
- 将其重写为 if/else 语句
- 三元运算符
- 试图通过线性逻辑运算符确定正确的符号距离
- 基于比较的数学,以避免与条件分支。
我现在很想使用诸如 step 或 lerp 之类的函数的数学版本,但它们的实现有时也涉及似乎分支着色器的条件或逻辑运算符。WebGL 只是忽略我尝试的所有内容,它只会在 Web 控制台中打印(错误:制服太多)。
就好像它总是知道我在做什么(◕︵◕)
我也在尝试安装其他 Webgl 调试控制台,例如 spector.js,但我没有从中找到任何重要的线索。
我是着色器编程的新手,所以真的不知道调试它的最佳方法,并且想知道社区中是否有人知道出路。
} 吨
c# - 如何正确混合两个 RenderTexture?
我正在尝试创建使用 RenderTexture 进行绘画的小型绘画应用程序。我的目标是在“Draw”RenderTexture 上用颜色和 alpha 绘制“Brush”纹理(整个纹理的颜色为 (1, 1, 1, 0)。我为此编写了一个着色器,但它将画笔四边形与黑色边框:
我正在使用下一个着色器进行绘画:
我创建了一个网格,并使用带有 RenderTargetIdentifier 和材质的 CommandBuffer 将其渲染为“Draw”RenderTexture。
我不明白如何避免画笔的黑色边框。我正在使用没有深度和 mip 贴图的 ARGB32 RenderTextures,画笔纹理:
我的目标是像在 Photoshop 中一样使用恒定的颜色进行绘制,甚至可以使用 alpha:
如果有人能给我关于如何正确混合 RenderTexture 的建议,我将不胜感激!
c# - 编辑需要 2 个 vector3 的 Unity 着色器
这是来自统一资产商店的果冻着色器,但我无法弄清楚如何使其始终处于活动状态,因为它需要 2 个向量 3(_ModelOrigin 和 __ImpactOrigin)。关于如何编辑它的任何想法总是有效的?
这就是我现在使用它的方式:
但是当游戏对象网格太远时它会停止工作
我也尝试使用transform.position
,但是当我移动游戏对象时,着色器会获得新值,因此它会滞后一秒钟
谢谢
unity3d - unity gpu 实例化着色器错误旋转
我正在尝试统一渲染许多(1M)个立方体,它们都具有不同的旋转、位置和颜色。位置和颜色工作正常,但旋转计算错误。当我将它们围绕 x 或 z 轴旋转 180 度以上时,它主要表现出来。这是我的代码:
}
也许矩阵计算有问题?
unity3d - 如何在着色图中获取游戏对象的实际大小?
我需要在着色器图中获取对象的实际大小。我目前只有 Object > Scale 节点或在运行时手动设置对象大小的选项。
有什么方法可以轻松地获取着色器图中对象(或边界)的大小?
unity3d - Build Unity URP 后处理 Bloom 上的粉色/蓝色色调
首先,我们使用 Unity 2019.3.0f6 和 URP 7.2.1。
大约 1/3 的时间我们加载游戏的场景(仅在构建中),它被染成粉红色,顶部带有橙色条带(如“粉红色构建”所示)或蓝色带有顶部绿色条带(如图所示) “blue build”),直到您进入下一个场景。另外 2/3 的时间屏幕很好。
在查看日志中的着色器编译后,它们似乎都在加载(在粉色/蓝色构建发生和没有发生之间,输出中没有任何变化)。然后,我们尝试打开和关闭相机上的不同组件,以隔离可能导致问题的原因(因为色调效果仅发生在 Unity 画布下方,因此我们认为这可能是相机/后期处理的问题)。
我们已将问题缩小到用于后期处理的卷组件上的卷配置文件上的 Bloom Override。关闭 Bloom Override 会使问题在构建中消失,但我们希望保留 Bloom 效果。
我们已经尝试打印 Bloom Override 下的所有值,以查看粉红色/蓝色时是否存在异常,但没有差异。从字面上看,当它工作和不工作时,我们的日志中没有什么不同。我们唯一确定的是关闭 Bloom 可以解决问题。如果有人遇到这种情况,这是一个绝望的求助电话,因为我们完全不知道从这里去哪里。