
实践
悄悄努力,然后惊艳到所有人!!!
金朝
活到老,学到老.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
简单水波
前言:这篇博客主要是使用plane来简单模仿高低起伏,错落变化的水波效果。设计思路:如下所示:1.由于plane的顶点坐标中y轴分量为0,所以我们可以考虑使用正弦波产生简谐运动来改变顶点y轴值,从而实现高低起伏效果。2.将x和z轴分量值作为正弦波的影响因子,从而得到水平和垂直方向上都有高低起伏变化。3.可以多加几个不同正弦波来改变y轴值,从而实现错落变化的效果。最好不超过4个,此处我使用2...原创 2019-03-20 16:49:50 · 249 阅读 · 0 评论 -
光的反射实现原理
前言:本篇博客只是一个简单的了解光的反射实现原理的例子,主要是当做笔记使用。核心要点:如下所示:1.光的折射原理主要依赖于斯涅尔定义。如下所示:2.光的反射原理主要依赖于菲涅尔定义。由于其过于复杂,一般使用菲涅尔近似值来表示。如下所示:核心代码:如下所示:Shader "Unlit/FresnelShader"{ Properties { _MainTex ("Textur...原创 2020-02-02 17:10:51 · 4180 阅读 · 2 评论 -
热浪扭曲火焰
前言:本篇博客只是一个简单的了解热浪扭曲火焰的例子,主要是当做笔记使用。设计流程:如下所示:1.新建一个场景,里面包含一个地板floor,一个墙面wall和一个火焰例子fire(自带粒子系统中的火焰)。如图所示:2.新建一个fire shader和material并赋给场景中的fire对象。fire shader使用的纹理跟粒子系统中自带的纹理一样。如图所示:3.fire shade...原创 2020-02-02 17:10:25 · 621 阅读 · 0 评论 -
实时影子
前言:本篇博客只是一个简单的实现主角影子移动功能的例子,主要是当做笔记使用。核心知识点:1.投影映射纹理:就是利用投影机(可以是摄像机,也可以是Projector第三方组件)将指定纹理中的顶点坐标经过模型->世界->视角->齐次裁剪->投影映射矩阵变换来生成采样坐标,然后利用透视除法将采样坐标中的x和y分量除以w分量,从而得到投影映射纹理采样坐标。然后利用该投影映射纹理...原创 2020-02-02 17:11:03 · 329 阅读 · 0 评论 -
了解地形系统采样流程
前言:本篇博客只是一个简单的了解地形系统创建和采样的例子,主要是当做笔记使用。核心要点:如下所示:1.创建地形系统流程如图所示:2.设置地下系统如下所示:3.添加地形纹理如下图所示:4.纹理平铺次数等于纹理宽高除以添加纹理时设置的纹理大小。如下图所示:5.在地形中进行纹理绘制时,地形系统会每四张纹理生产一张控制纹理,并以红绿蓝黑色(也就是纹理的rgba分量值)来依次表示四张纹理...原创 2020-02-02 17:10:03 · 327 阅读 · 0 评论 -
简单法线纹理
前言:本篇博客只是一个简单的了解法线纹理创建和采样的例子,主要是当做笔记使用。凹凸映射:由于场景中的模型会存在凹凸不平的效果,如果把这个凹凸效果交给建模师来构建模型的话,这样模型的三角面片将会十分的巨大,从而造成gpu的渲染压力。这时就可以将模型贴图的每个像素点的高度信息转换成法线信息并以像素的形式存储在法线纹理中。当渲染模型时就会从法线纹理中采样获取像素信息,并将该像素信息转换成法线信息,然后...原创 2019-04-22 02:19:18 · 787 阅读 · 0 评论 -
简单透明度
前言:本篇博客只是一个简单的实现透明度功能的例子,主要是当做笔记使用。核心要点:如下所示:1.要使模型具有透明度效果,必须在Tags中将Queue指定为Transparent,并且在pass里面使用blend srcalpha oneminussrcalpha。2.透明度渲染队列(Queue = Transparent)在渲染模型时,会先渲染不透明模型再渲染透明模型。并且在渲染时会按照深度值...原创 2019-04-12 23:14:06 · 435 阅读 · 0 评论 -
简单边缘泛光处理
前言:本篇博客只是一个简单的实现边缘泛光功能的例子,主要是当做笔记使用。核心要点:1.使用法向量和视角向量的点积值来获取明亮度,从模型边缘到模型中心点积值从0~1变化。点积值为负数说明当前顶点在平面背面,摄像机视角看不到,可以不做明亮度处理。点积值为正值时,表面当前顶点在平面正面,可以结合衰减系数调用pow接口来获取衰减后的明亮值。2.第一个pass主要是沿着法向量方向缩放模型,并从模型中心...原创 2019-03-27 16:49:30 · 899 阅读 · 0 评论 -
简单镜面反射
前言:本篇博客只是一个简单的实现镜面反射功能的例子,主要是当做笔记使用。核心要点:如下所示:1.顶点镜面反射颜色值等于反射光照乘以反射强度来获取。而入射光向量,法向量,视角向量,反射光向量的关系图如下所示:2.入射光向量实际上就是光源指向顶点的向量。要获取该向量,可以使用顶点指向光源向量的反操作获取(也就是-WorldSpaceLightDir处理)。3.反射光向量可以通过将法向量和入射...原创 2019-03-23 23:05:23 · 3193 阅读 · 0 评论 -
简单阴影处理
前言:本篇博客只是一个简单的实现方向光和点光源产生阴影功能的例子,主要是当做笔记使用。核心要点:1.光源(方向光或者点光源等)必须设置阴影类型,否则将不会产生对应光源的阴影。如下图所示:2.阴影投射物体上面必须开启投射阴影功能,否则将不会传递光源产生的阴影。如下图所示:3.阴影接收物体上面必须开启接收阴影功能,否则将不会显示光源产生的阴影。如下图所示:4.可以写一个LightMod...原创 2019-03-26 20:34:29 · 960 阅读 · 0 评论 -
简单纹理采样
前言:本篇博客只是一个简单的实现普通纹理和光照纹理采样功能的例子,主要是当做笔记使用。核心要点:1.我们可以对1~4维纹理对象进行采样。其中采样采样接口分别为tex1D,tex2D,tex3D,texCUBE。采样对象类型分别为:sampler,sampler2D,sampler3D,samplerCUBE。采样坐标分别是x,xy,xyz,xyzw。2.采样坐标是不是有效主要看纹理的展开模式...原创 2019-03-30 17:20:23 · 2441 阅读 · 0 评论 -
简单漫反射
前言:本篇博客只是一个简单的实现漫反射功能的例子,主要是当做笔记使用。核心要点:如下所示:1.使用法向量和光照向量在相同坐标系中进行点积得到光照强度。点积值小于0表示光照在两向量所在平面的背面,此时无需光照颜色。点积值大于等于0时表示光照在两向量所在平面的正面,此时点积值越大,两向量夹角越小,光照强度就越强。所以可以将点积值使用saturate函数限定在0~1之间来乘以光照颜色,从而得到每个顶...原创 2019-03-22 17:55:35 · 1205 阅读 · 0 评论 -
模拟3D变换和光照计算
前言:为了更深入理解3D变换的过程和光照计算的方式,我这里将使用一个windows窗口应用程序项目来进行模拟。至于windows上创建窗口应用程序的相关知识点,我这里就不过多赘述。核心要点:本篇博客主要涉及到以下知识点:1.向量B减去向量A时会得到一个从A指向B的向量。2.向量之间进行叉乘会得到一个垂直于叉乘向量所在的平面的法向量。向量叉乘顺序不同,得到的法向量的垂直朝向也将不同。此时我们...原创 2019-03-21 18:50:06 · 1065 阅读 · 0 评论 -
简单扭曲
前言:对shader基础知识不熟的,可以观看我的unity shader基础篇系列文章。同时本篇文章也不会对shader在unity中的基础使用做详细讲解。设计思路:如下所示:1.为了具有周期扭曲效果,我们可以使用周期函数sin,cos这些来对模型进行y轴旋转。2.使用顶点距离模型中心点的距离来作为角度值,并结合时间来控制。3.y轴旋转矩阵和MVP矩阵进行乘值时,性能不如单独对x和z轴分量...原创 2019-03-20 12:27:22 · 321 阅读 · 0 评论