商业渲染之乱七八糟的ShadowMap-利用了UnityWorldToClipPos

想脱离Unity的Shadowmap,也好新手掌握

(关于Unity官方的lightmap和阴影,美术自己不去学,也很难学,除非专门想转CG的程序员,否则也很难啃下来,所以一个团队里,美术美工不懂,技术员不懂,那。。。。只能乱作,现实就这样的,为了打破现实,这里自创造一个shadowmap,shadowmask,从0开始做,都能做出来,那是真的掌握了,原理之后会补上)

创造一个Shadowmap

一开始,死活出问题,显示不了Shadowmap的正确贴图

换了Shader,换了写法,完全乱套,并不是换了的写法错误,Shader写法是正确的,而是无论怎么换,加减一些偏移,换下色等操作之后,表现和代码不一致,极度有点怀疑自己写错代码了

(这里其实有几个伏笔,一般人也确实可能写错代码,但要是没错;问题就变成代码表现不一致,这难道是Unity的错,若Unity也没错;那其实只能是某些配置错了。)

一起来找碴(不同场景,环境接近,结果不同)

同样shader,不同材质,结果又不同

最后发现是这个问题

// Upgrade NOTE: excluded shader from DX11; has structs without semantics (struct v2f members depth)
//#pragma exclude_renderers d3d11
// Upgrade NOTE: excluded shader from DX11; has structs without semantics (struct v2f members depth)
//#pragma exclude_renderers d3d11

跌落,使用了Diffuse(Fallback)过分保护害死人啊,本来不应该用这个

这个涉及到Unity HLSL Shader的保护机制,若Shader出错(但是没有任何提示),直接使用Fallback声明的后备Shader,例如Diffuse或Hidden/Shader等

所以一些特殊Shader,必须特别小心,我们想特殊显示ShadowMap,被用成Diffuse普通显示,当然不行

UnityWorldToClipPos方法原理

float4 vert= UnityWorldToClipPos(v.vertex);

总结一下Unity Shader编写入门

写 Unity HLSL的着色器,游戏版本太多,还是需要模板

需要一个高亮编辑器

(语法检测是有的,不过新手也看不懂)

(可见即可得,做的不错的,甚至可以runtime运行时直接编译Shader)

性能检测,(unity有提供一些工具

项目资源下载

简单ShadowMap2.rar-Unity3D文档类资源-优快云文库

不需要挂在camera上,不需要指定light(具体原理请自行理解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值