问题标签 [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.
unity3d - 使用 CG 编程和 Shaderlab 在 Unity 中合并 2 个着色器
我想为 Unity 合并这两个着色器的功能。第一个着色器是添加故障全息图效果的主着色器。第二个着色器正在制作表面纹理闪烁器以增加视觉效果。
如果可能的话,我正在尝试合并我的代码版本,或者允许我在相同材料上实现这两个功能的不同通道。
我已经尝试过 shaderpass 功能,但无法使其工作。
有可能吗?
第一个着色器代码
第二个着色器代码
第三个着色器代码
后备“漫反射”}
unity3d - 将整数数组/纹理传递给统一着色器的方法
我正在尝试实现具有强大单元边界的基于单元的地形渲染(就像在像 Transport Tycoon 这样的旧游戏中一样)。为了优化性能,我通过实际游戏地图传递纹理,在其中我尝试为自定义着色器编码单元类型,因此着色器可以查找每个单元的类型并确定在渲染地形时将哪些纹理应用于特定单元网。
以整数类型传递该映射会很方便,因此我可以使用按位运算符屏蔽特定位,并且基本上只在一个字节中传递大量数据。传递浮点数会导致精度丢失,我无法确定在转换为浮点数并返回 int 后是否具有相同的整数。
有没有办法将整数类型的数组(二维数组甚至纹理更好)传递给着色器,或者他们在 API 中没有 SetIntegerArray 是有原因的,比如缺乏与移动 GPU 的兼容性之类的?
unity3d - 如何重新计算法线?
我正在尝试编写一个简单的着色器,用正弦波移动所有顶点。
问题是在移动它们之后,法线是错误的,因此没有实时阴影。我搜索了很多,发现我需要使用假邻居重新计算法线。这些实现都不是针对 Unity Shaderlab 的,所以我不能只是复制和粘贴它们,而且我对着色器代码的了解非常基础,所以我无法将我发现的内容转换为我需要的内容。
任何人都可以帮助我在移动顶点后重新计算法线的内容和方法吗?
unity3d - Unity 地形引擎如何添加任意数量的着色器通道?
现在我正在做一个项目,该项目涉及将 splatmaps 应用于生成的网格。我正在尝试使用内置的地形着色器来实现这一点,但我遇到了一个涉及“FirstPass”和“AddPass”着色器的问题。
很清楚这些着色器应该如何工作。应用 FirstPass 并处理 4 个纹理和一个控制(splat)纹理。如果用户应用超过 4 个纹理,则 AddPass(与 FirstPass 非常相似)在编译时被“添加”为另一个着色器通道。根据用户对地形应用的纹理数量(每次通过 4 个纹理),添加任意次数的 AddPass。
地形引擎是如何实现这种多通道效果的呢?所需的通行证数量可以在编译时确定,所以我不认为这是不可能的......我只是不知道从这里去哪里。我认为这可能与 FirstPass 底部的 Dependency 属性有关,但我不确定。
如果有人对此有任何见解,请告诉我。为方便起见,我已将Unity 存档中的FirstPass、AddPass和TerrainEngine.cginc着色器文件上传到 pastebin。
谢谢!
unity3d - 在 Unity Shaderlab 中,如何使用 lerp 和 deltaTime 为值设置动画
如何使用自定义标准表面着色器将值动画化为目标值?
例如:
此代码不起作用,但应该演示目标是什么:设置 targetAlpha 时,着色器将淡入该值。
unity3d - 将连续着色器应用于纹理,同时保持浮动精度
我在 Unity 中有一个渲染纹理,并且正在对其应用连续的着色器,如下所示:
在我的着色器中,我只使用浮点数,但由于输出纹理是 RGBA 32 位,所以输出的颜色值在 8 位上进行量化。
在我的示例中,有没有办法保持中间结果(Tex2、Tex3)的浮点精度,并且只将最终纹理 Tex4 转换为 RGB 32 位?
unity3d - 用于 AR 应用的 Unity 透明阴影接收平面仅接收阴影而不接收光反射
我正在为 Unity 中的增强现实应用程序开发一个透明阴影接收着色器,它被放入一个平面中,该平面将接收来自点光源或聚光灯的阴影。它工作正常,但是正如您在图像中看到的那样,飞机也接收到光。
我正在使用统一 5.6.3p4。请告诉我此脚本中可能存在什么问题,或者我应该在此代码中进行哪些更改以仅接收阴影而不接收平面上的光反射?
着色器脚本如下:
}