找回密码
 立即注册
查看: 320|回复: 0

Unity:记录一个关于Screen Space Shadows的问题

[复制链接]
发表于 2022-4-24 16:23 | 显示全部楼层 |阅读模式
// after CGPROGRAM;#include "AutoLight.cginc" // in v2f struct;LIGHTING_COORDS(0) // replace 0 with the next available TEXCOORDs in your shader, don't put a semicolon at the end of this line. // in vert shader;TRANSFER_VERTEX_TO_FRAGMENT(o); // Calculates shadow and light attenuation and passes it to the frag shader. //in frag shader;float atten = LIGHT_ATTENUATION(i); // This is a float for your shadow/attenuation value, multiply your lighting value by this to get shadows.
自己写着色器的时候碰到一个问题,用了阴影三件套以后阴影还是会出现问题,具体表现是当画面中不存在使用原生材质的物体的时候,自定义着色器的阴影计算就会出现问题。



当sphere离开画面的时候,阴影计算就出错

经过排查,发现问题出在Screen Space Shadows上,当相机离得远了以后这张图就获取不到了。




解决的方法是在着色器中加上:
Tags {
    "LIGHTMODE" = "FORWARDBASE"
    "SHADOWSUPPORT" = "true"
    "RenderType" = "Opaque"
}
具体是什么原理我还不是很清楚,等学了builtin shader再回来补充吧……
谢谢@黄虎同学 帮我找到了这个解决方案 ()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 18:48 , Processed in 0.090469 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表