谁能给我解释一下动态阴影效果和unity3d shader 阴影

shader最后FallBack 很重要,但不知道原因,请指教!(颠覆认知)
大部分教材对于FallBack是这么解释的:
回退 (Fallback) 可定义在所有子着色器 (Subshader) 之后。大致来说就是“如果所有子着色器都无法在该硬件上运行,请尝试使用另一个着色器的子着色器”。
但事实是:
如果你新建一个最简单Shader,比如给Cube加上一张纹理图片,如果没有添加FallBack,则没有阴影!!!
如果自己写一个半透明物体的Shader,没有添加FallBack,则阴影出错!表现为,透过物体透明部分看不到地上的阴影,或者阴影是一个方块,没有对应的纹理!
见下图,如果使用 Fallback &Diffuse&,则有纹理,但阴影被自己遮挡且阴影纹理不正确(这个问题我找了半个下午才发现是Fallback出现了问题!)
726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1606/thread/2_c5ccd.png');" alt="e" />
添加
Fallback &Transparent/Cutout/VertexLit&
726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1606/thread/2_7ba772a55930.png');" alt="g" />
不加Fallback则没有阴影
这是怎么回事呢??
请教各位(有答必回)
要评论请先&或者&
国内的开发者都是半吊子 &不求甚解官方有一句话:A fallback statement has the same effect as if all subshaders from the other shader would be inserted into its place.所以并不是单纯的尝试用另一个子着色器,而是这个着色器的代码全部插入到了这个位置。因为假如签名的着色器都不符合,比如LOD都是400, 那么自然会运行后面这个位置的子着色器。而你的疑惑也可以解释,unity的内置阴影系统完全是利用shader本身的变量来处理的。当你利用Diffuse的时候,会把整个光照系统中需要的阴影文件全部引入。自然就有阴影了。由此也可推测,阴影是独立的一个部分,不在shader内部,应该和表面着色器的编译后的文件有关,有兴趣可以详细看看。
:国内的开发者都是半吊子 &不求甚解官方有一句话:A fallback statement has the same effect as if all subshaders from the other shader would be i... 原来如此……我搜索到这句话了,嘿,以前看过官网这个页面,但这句话在最后的Detail里面,不知道为什么官方放在最后……还有,我写了一个最简单的Surface Shader,加上与不加FallBack,使用代码比较器发现编译后的代码就那一行FallBack不同,其它都一样,这是这么回事呢?(点击Shader的show generated code 以及 Compile and show code)
:原来如此……我搜索到这句话了,嘿,以前看过官网这个页面,但这句话在最后的Detail里面,不知道为什么官方放在最后……还有,我写了一个最简单的Surface Shader,加上与不加FallBack,使用代码比较器发现编译后的代码就那一行... 具体我也没研究过 毕竟unity不开源 我只能推测它为了优化效率 将阴影的底层代码直接用汇编层处理了 毕竟着色器的性能是需要做到极致的优化才行
:具体我也没研究过 毕竟unity不开源 我只能推测它为了优化效率 将阴影的底层代码直接用汇编层处理了 毕竟着色器的性能是需要做到极致的优化才行 有道理,慢慢实践吧,可能自己能力还不够到理解的程度~
我来告诉你为什么,unity专门用一个额外的pass来更新光源的阴影纹理映射,也就是一个LightMode被设置为ShadowCaster的pass,如果在你的shader中这样的pass没有被定义那么unity就会到你的fallback里去找。也就是说你如果不写fallback又没写这个pass,unity就找不到这样的pass从而不会渲染阴影。选择不同的fallback渲染阴影所用的pass也可能根据fallback的不同而不同从而造成形成的阴影不同。2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
2008年10月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Unity Shader 阴影
来源:博客园
最近在看Unity shader开发实战详解,刚开始看阴影部分,稍微有了点思路.在这里写点笔记,算是小结吧. .阴影实现方法 一种是通过模拟光照的原理,用向量的方法 找到被光线照射的点 映射到平面的位置。这个需要高中的立体几何知识就能解决,通过向量的计算找到一条线相交于一个平面的点。将点的颜色改变 一般是改成灰色,模拟阴影。并不是说只能显示灰色,其他颜色也是可以的。 另外一种就是通过改变光照的强度值,首先判断物体的每个顶点是否被照射到,计算出没有被光线照射到的顶点光照值 改变光照值来实现阴影效果。 这种方式就是真的阴影,只有黑色。。。。 明天再来具体研究实现方式。 阴影的研究和光照联系十分紧密。
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动shader 利用opengl实现场景的阴影效果, 不错。是用 ow volume 的原理。 program 238万源代码下载-
&文件名称: shader
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 3564 KB
&&上传时间:
&&下载次数: 73
&&提 供 者:
&详细说明:利用opengl实现场景的阴影效果,效果不错。是用Shadow volume 的原理。-Use opengl scene shadows to achieve good results. Shadow volume is the principle.
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&shader\3Dobject.h&&......\Data\Object.txt&&......\....\Object1.txt&&......\....\Object2.txt&&......\....\SimpleObject.txt&&......\.ebug\BuildLog.htm&&......\.....\Lesson27.exe&&......\.....\Lesson27.exe.embed.manifest&&......\.....\Lesson27.exe.embed.manifest.res&&......\.....\Lesson27.exe.intermediate.manifest&&......\.....\Lesson27.ilk&&......\.....\Lesson27.obj&&......\.....\Lesson27.pdb&&......\.....\mt.dep&&......\.....\vc90.idb&&......\.....\vc90.pdb&&......\Lesson27.cpp&&......\Lesson27.dsp&&......\Lesson27.dsw&&......\Lesson27.exe&&......\Lesson27.ncb&&......\Lesson27.sln&&......\Lesson27.suo&&......\Lesson27.vcproj&&......\Lesson27.vcproj.FOURDEGR-B00ACD.Administrator.user&&......\NeHe's Readme.txt&&......\Data&&......\Debug&&shader
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 一个小而使用的效果,解决在做网站项目时经常碰到的一个问题:页面主体部分的左侧
(或者右侧)需要阴影效果,阴影的效果只在顶部和底部位置体现。但是网页的高度又是变化的!这段代码可以帮你解决这个问题。具体效果看下附件
&[] - 游戏中的关于镜面的实现,采用的是模版技术,可以反射物体等。
&[] - Real-Time Shader Programming
&[] - OpenGL三维图形系统开发与实用技术》书的源码
&[] - 这是一本讲解DirectX的Shader方面的书。对使用shader技术开发高级图形渲染的具有很好的借鉴意义。
&[] - 非常好的GLSL脚本解释器,适合OpenGL Shader 开发
&[] - opengl来实现阴影的效果,键盘可以控制场景中的等和物体的运动!
&[] - opengl 阴影绘制,实现动态阴影绘制,效果好,容易看懂
&[] - The book describes so called Shader technology in computer graphics pipeline. vertex, pixel shaders, registers, effects and aspects of shaders.
&[] - Shader编程实用框架,用于3D编程,对于常用shader 编程人员很实用,不用进行繁琐的搭建shader 框架}

我要回帖

更多关于 实时阴影shader unity 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信