Unity Shader笔记

UnityURPToonLitShaderExample着色器有时候会显示在Failed to compile里:

重新导入后会不再显示Failed to compile

UnityURPToonLitShaderExample着色器应用后,关闭项目再打开,妮露和甘雨的着色出现黑色:

把人物删掉,重新导入,应用Shader,人物显示正常:

关闭项目重新打开后又出问题。

妮露的头发的渲染由两个材料完成,“前蝴蝶结”渲染大部分颜色:

“后发”渲染头发上的光泽,大部分是黑的:(可以看到出问题的时候头发光泽还在)

推测原因是把“后发”这个材料覆盖在了“前蝴蝶结”上。

解决方法:后发材料勾选Alpha Clipping。这个选项的意思是把贴图里不透明度alpha值不大于Cutoff的部分设置为透明,让其他材料渲染。

关于下面的Cutoff:为0时预览材质球跟之前一样,大部分是黑的;稍微调大一点黑色消失,只剩下光泽;再调大一点光泽也消失。但是调这个对场景里的效果没影响。

但是甘雨的后背材料“肌”勾选Alpha Clipping没用。给衣服的材料“裙摆”勾选Alpha Clipping有用:

同时发现“裙摆”预览材质球的一些部分由黑色变透明,所以是“裙摆”该设置透明的部分没有透明,渲染成黑色,盖在了后背的材料“肌”上。

总之,所有预览材质球里有这种黑色部分的材料都应该勾选Alpha Clipping。如果没有,勾不勾选就没有区别。

从顶点着色器到片元着色器的结构体里的一个变量没有写语义

系统会自动加上这一段:

给自己写的着色器加阴影效果

解决方法:在Shader最后加Fallback "Diffuse",GPU用自定义的着色器渲染完会调用Diffuse着色器,Diffuse着色器是有阴影的。

背面剔除

背面剔除后从模型内部看不到模型,可能可用于第一人称射击游戏使第一人称相机不渲染头。

URP内置的Lit和Unlit着色器的背面剔除叫Render Face。

自己写代码是声明一个[Enum(UnityEngine.Rendering.CullMode)]类型的变量,再在Pass开头写Cull[变量名]

某些人的衣服颜色不对

着色器是SimpleURPToonLitExample(With Outline)和URP/Lit会有此问题。URP/Unlit没问题。

更奇怪的是改变BlendShapes衣服会变色:

改成别的着色器如URP/Unlit,好了。所以认为是着色器不完善,细节无法深究。

Instancing: Property 'unity_RenderingLayer' shares the same constant buffer offset with 'unity_LODFade'. Ignoring.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

移动相机时场景里的树明暗突变,可能是这个报错的结果。

后来我想起我导入了URP的例子,删除例子,场景里的东西变成淡蓝色,重新渲染了。然后问题消失了。不过具体机制还是不懂。


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值