Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 在着色器图形中访问次纹理法线贴图?_Unity3d_2d_Shader_Shader Graph - Fatal编程技术网

Unity3d 在着色器图形中访问次纹理法线贴图?

Unity3d 在着色器图形中访问次纹理法线贴图?,unity3d,2d,shader,shader-graph,Unity3d,2d,Shader,Shader Graph,我正在使用Unity 2020.1.3f1的URP和新的2D渲染器系统。 目前为止,我拥有的对象在内置“精灵照明默认”材质和具有自定义内置像素轮廓着色器的材质之间变化,详细信息如下: 这很好,但我最近在导入设置中将灯光和法线贴图作为次要纹理添加到精灵中。默认的照明纹理在显示法线贴图时没有问题,但是当我尝试修改着色器图形以包含法线贴图时,它不像将_MainTex设置为参考时的精灵纹理那样导入 我尝试过_NormalMap(导入器中的次纹理名称!)和_NormalTex,但最终总是无法导入法线贴图。

我正在使用Unity 2020.1.3f1的URP和新的2D渲染器系统。 目前为止,我拥有的对象在内置“精灵照明默认”材质和具有自定义内置像素轮廓着色器的材质之间变化,详细信息如下:

这很好,但我最近在导入设置中将灯光和法线贴图作为次要纹理添加到精灵中。默认的照明纹理在显示法线贴图时没有问题,但是当我尝试修改着色器图形以包含法线贴图时,它不像将_MainTex设置为参考时的精灵纹理那样导入

我尝试过_NormalMap(导入器中的次纹理名称!)和_NormalTex,但最终总是无法导入法线贴图。我甚至尝试将MainTex改为Texture2D,但考虑到它不断引发错误,我认为这不是正确的方法。(这一项需要具体说明。)

我是不是遗漏了什么?我能在网上找到的所有教程都只显示人们通过检查器拖动法线贴图,但是这些材料将被许多不同的精灵使用,所以这似乎…违反直觉

最重要的是,默认材质/着色器对此没有任何问题,因此我觉得我要么错过了什么,要么我将不得不通过代码而不是动画来编写精灵的代码来更改材质,只是为了这个小而恼人的怪癖

(编辑) 所以,对于遇到同样问题的任何其他人,请更新。 我设法找到了shadergraph文档的一部分,这似乎是唯一讨论此问题的部分:

需要将MainTex的引用命名为_MainTex以渲染精灵。还建议将遮罩的引用命名为_MaskTex和法线命名为_NormalMap,以匹配此软件包中使用的着色器输入

所以从我收集的信息来看,_MainTex是ShaderGraph中唯一一个自动的。 在查找了一整天的教程之后,我注意到每一个教程都只是简单地将法线贴图和额外纹理设置为默认纹理,这样它们就可以在不手动指定的情况下显示

我认为这在手写着色器中是可能的,但我决定只在手绘精灵轮廓上使用一个简单的无光shadergraph,显示在主对象的父对象上的单独游戏对象上。
我不会将此作为一个答案,以防将来有人找到解决方案,因为在我看来,这不是一个真正的解决方案。

我不知道你是否已经解决了这个问题,但我会尝试回答,因为我有同样的问题。创建一个新的Texture2D节点,将其转换为属性,并将引用作为_NormalMap,将其作为法线连接到示例纹理2D节点,然后将其插入“精灵照明”主节点。现在进入“精灵编辑器”(sprite editor),将法线贴图指定为次要纹理,并确保名称与着色器中的名称相同,\u NormalMap(或其他名称,只要相同)。这目前已经为我工作,着色器图形通过引用自动检测法线贴图纹理。下面附上一些图像,以帮助和字符精灵的完成结果,它使用了一个自定义着色器,我从教程中挑选并添加了法线贴图。

Error assigning 2D texture to 2DArray texture property '_MainTex': Dimensions must match
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()