问题标签 [shaderlab]

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.

0 投票
1 回答
682 浏览

unity3d - unity mesh 有黑点

您好,我在 YouTube 上关注了 Sebastian League 制作的关于程序生成的视频系列,并且我关注了他的整个视频系列,但就我而言,网格中有黑点,仅在水域。我正在为那些想知道的人使用全局模式,也使用统一 2019.4.6f1。我想摆脱那些试图构建和运行的黑点,而黑点就在那里。

他的系列链接是:https ://www.youtube.com/watch?v=wbpMiKiSKm8&list= PLFt_AvWsXl0eBW2EiBtl_sxmDtSgZBxB3 我已经在 GitHub 上下载了他的项目,他的 GitHub 页面似乎没有问题:https:// github.com/SebLague/Procedural-Landmass-Generation 这里还有一张图片->这里

我正在为地形创建自己的自定义着色器,在这里

0 投票
1 回答
544 浏览

unity3d - unity:隐藏特定区域的材质

我正在为 ios 和 Android 制作一个 3D 应用程序。

下图中的每个对象都具有与其他对象不同的材料。

在此处输入图像描述

我想让对象 3 与对象 2 相交的部分出现,而与对象 1 相交的部分消失

笔记:

对象 3 上下移动。

3 个物体与相机的深度相同(z 相同)。

0 投票
1 回答
582 浏览

unity3d - 试图修改着色器,使颜色是垂直的而不是水平的

这个着色器(复制如下)使材质有点像径向渐变。我正在尝试修改它以使着色器效果类似于垂直/线性渐变,就像这样。我不相信它创建的是真正的渐变,而是添加颜色并在它们之间添加 alpha。它基于这个很棒的项目

这是我目前使用此着色器并打开效果的scanlines效果图片:https ://imgur.com/a/At0ATB5

这是我需要效果的图片:https ://imgur.com/a/aTtLhoN

这是当前编辑着色器的图片:https ://imgur.com/a/5hxMZtt (这似乎是径向的,不是吗?)

我尝试修改方向,尝试应用蒙版,但到目前为止没有任何效果。如果有人有任何建议,我将永远感激不尽。

0 投票
0 回答
129 浏览

performance - 在着色器中有效地将给定区域的像素着色为多边形

在我的应用程序中,我将屏幕划分为不同的区域。这些由多边形边界给出。一旦这个分区在 CPU 中发生,着色器现在应该给每个像素一个与其所在区域相对应的值。

目前,我正在对每个像素进行多边形点测试,这当然很慢。为了加快速度,我还计算了每个多边形的边界框以进行第一次预检查。

原则上是否有更快的方法来做到这一点?我研究了一些洪水填充算法,但它们似乎不适合在着色器中使用。

或者,如果我必须对每个像素进行多边形点检查,是否有一种算法可以计算原始多边形中包含的简化多边形,以进一步提高性能?对于像素位于边界框中但不在简化多边形中的少数情况,这只会让我对原始多边形进行多边形点检查。

0 投票
1 回答
2228 浏览

unity3d - 在 Unity3d 中扭曲或收缩纹理的特定区域的着色器

我在下图中模拟了我想要完成的任务——试图将像素捏向 AR 标记的中心,这样当我覆盖 AR 内容时,AR 标记就不那么明显了。

我正在寻找一些可以参考的示例或教程,以开始学习如何创建着色器来扭曲纹理,但我一无所获。

实现这一目标的最佳方法是什么?

在此处输入图像描述

0 投票
1 回答
4713 浏览

unity3d - 如何将 ZWrite 通道添加到透明着色器图?

我一直在尝试使用 ShaderGraph (Unity 2019.3.0f3)从 Tim-C(这一切似乎都已经过时,甚至评论中发布的修复)实现这种效果,但据我所知,你不能做到这一点ShaderGraph,所以在查看了 ShaderLab 文档上的这个页面后,我想出了以下使用我制作的着色器图的着色器。

使用这个着色器可以很好地显示着色器图:

所以我尝试添加一个 ZWrite 通道,但这个着色器将什么都不显示(但场景视图中的轮廓仍然像它在那里一样工作):

除了我在这里写的以外,我对 ShaderLab 的经验或知识很少,那么我可以做些什么来制作我需要添加UsePass的 pass 的工作?ZWrite

0 投票
1 回答
791 浏览

unity3d - 着色器饱和()在不应该时创建渐变

为 Unity 编写着色器,我不明白这里发生了什么。我有一个附有材料的球体。材质附加了一个着色器。着色器非常简单,它会生成一些单纯形噪声,然后将其用作球体的颜色。

着色器代码:

单纯形噪声函数来自Keijiro 的 Github

非饱和 (A) 版本:
版本 A

饱和 (B) 版本:
版本 B

非饱和版本(版本 A)正如预期的那样。通过将单纯形噪声乘以 10 倍,结果是一系列白色和黑色斑点。饱和(版本 B)理论上应该只是在 1 处切掉所有白色斑点,在 0 处切掉黑色斑点。但它似乎正在创建一个全新的渐变,我不知道为什么。

我假设我遗漏了一些关键假设,但我不清楚那会是什么,因为数学似乎是正确的。

0 投票
1 回答
332 浏览

unity3d - 在 Unity 中使用 ShaderLab 将区域裁剪为椭圆形状

我正在尝试使用 Unity 中的着色器绘制椭圆体

按照步骤
1. 我在一些互联网教程的帮助下编写了一个自定义着色器
2. 在材质上添加了着色器
3. 将该材质应用于对象

这段代码用于制作一个圆圈,但是当我尝试使用函数 clip() 制作一个椭圆体时,它不起作用。根据文档,clip(float4 x) 也可用于剪辑表面。变量 _Radius 在世界空间中形成了一个完美的球体,但是当我尝试使用 _Radius.x 和 _Radius.y 时,代码不起作用。请参阅随附的图片。

在此处输入图像描述

0 投票
2 回答
5444 浏览

unity3d - 将着色器中的 float2/vector2 属性公开给 Unity 材质检查器

在 Unity shaderlab 着色器中,您可以在编辑器中向材质检查器公开着色器属性。这可以通过将要公开的属性放置在Properties部分中来完成,如下所示

Unity 在此处的文档中定义了一个属性列表。

但是,这不包括任何形式的 float2 或 vector2,只是单个FloatVectorxyzw.

我尝试将属性类型设置为float2And Vector2

两者都返回错误Parse error: syntax error, unexpected TVAL_ID at line 7

Vector或试图通过只设置一半的成员来减少一半

返回错误Parse error: syntax error, unexpected ')', expecting ','

我可以只使用 Vector 类型并且只使用它xy,但这会导致 UI 不清楚,因为检查器中现在有两个未使用的元素,并且找不到HideInInspector允许您隐藏zw值的 Property Attribute 或 Drawer(例如)检查员。

那么有没有办法使用属性类型公开 float2 ?或者,您可以在编辑器中将两个浮动属性彼此相邻放置,例如平铺/偏移抽屉是标准2D属性类型(可能类似于[EditorGUILayout.BeginHorizontal][2])?

0 投票
0 回答
1298 浏览

unity3d - 如何在 Unity 运行时创建 Shader?

我想在 Unity 的运行时创建着色器。有什么办法吗?我发现文章在 Unity3D 的运行时创建 GLSL 着色器, 但这不再有效,因为 Unity 不接受
new Material({shader_code_here});
它需要new Material(Shader.Find("{Shader name in project}");

任何帮助表示赞赏,谢谢。