位置: 编程技术 - 正文
推荐整理分享Unity3D游戏开发从零单排(十) - 进击的Shader续(Unity3D游戏开发毕业论文),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:Unity3D游戏开发培训课程大纲,Unity3D游戏开发(第2版),Unity3D游戏开发毕业论文,Unity3D游戏开发(第2版),Unity3D游戏开发(第2版)pdf,Unity3D游戏开发标准教程,Unity3D游戏开发标准教程,unity3D游戏开发,内容如对您有帮助,希望把文章链接给更多的朋友!
在这之前首先来了解一下SurfaceOutput这个结构体,它是一个包含大多数描述一个物体表面渲染特征的结构,具体结构如下:
基本上所有的Shader函数要处理的就是这个结构体。Unity自带的光照实现都定义在一些*.cginc文件中,要自定义光照模型,只要不用Unity自带的光照模型就可以了。
将下面这一行的语句的最后替换成对应的光照计算函数。
#pragma surface surf NoLight
无光照的材质Shader
自己实现一个diffuse
上图中左边是NoLight,右边是SimpleDiffuse。
同理可以自定义实现各种光照模型了,Lambert,Blinning,,,,,
补充一下光照函数的几种写法
half4 LightingName (SurfaceOutput s, half3 lightDir,half atten){}
这个函数用于不需要视角方向的情况下的Forward rendering。
half4 LightingName (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten){}
这个函数用于需要视角方向的情况下的Forward rendering。
half4 LightingName_PrePass (SurfaceOutput s, half4 light){}
这个函数用于Deferred rendering。
用代码控制shader动态修改材质对SimpleDiffuse稍微做一下修改,添加一个叠加的颜色。
在模型(有MeshRenderer的)上面挂一个脚本,实现如下MeshChanger
根据时间动态修改0号材质的_Color选项,结果就像这样自行脑补中间过程。
使用渐变纹理来处理光照首先要准备一张渐变纹理,原理就是通过计算当前位置的光照与法线的点积,索引到渐变图片上的像素值,最后将其和diffuse叠加。
渲染结果没有纹理的情况(是大象不是小猪)
换一下索引贴图
得到结果如下(Toon Shading)
参考Unity Shaders and Effects CookBook
Unity3D海量新书资源 书籍比较杂,有些不一定写的很好,全部是英文的(中文书一般是不会有清晰电子版,你肯定知道的),所以大家酌情下载喜欢的那几本看完就好了。
Unity3d UGUI 滚动视图ScrollView的使用教程之简易背包 Unity3d中,UGUI提供了ScrollRect、GridLayoutGroup、Mask这三个组件,我们用来实现滚动视图,这里用一个简易的背包作为示例。文章转自
Forward Render VS Deferred Rendering ForwardRender传统的渲染方式,你提供给显卡形状Mesh,它将其打散成一堆节点,接着经过一系列的变换和分割成为Fregment或者像素,在呈现在屏幕之前已经
标签: Unity3D游戏开发毕业论文
本文链接地址:https://www.jiuchutong.com/biancheng/383500.html 转载请保留说明!友情链接: 武汉网站建设