![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图形学
文章平均质量分 56
Oo喵生oO
每个优秀的人,都有一段沉默的时光。那段时光,是付出了很多努力,却得不到结果的日子,我们把它叫做扎根!
展开
-
UnityShader(四)
这次要只用顶点着色器和片元着色器实现水面效果,思路很简单,就是先把顶点坐标从模型空间转变到齐次裁剪空间,再左乘unity_ObjectToWorld矩阵转变到世界坐标,将世界坐标的y按照正弦规律变化即可得到水面的波涛汹涌的效果,然后我们设置两个颜色,波峰我们设置为深色,波谷我们设置为浅色,只需要根据我们得到的y坐标偏移值lerp插值一下即可得到一个简单的水面效果,没有用到任何贴图。原创 2023-11-07 10:03:36 · 253 阅读 · 0 评论 -
UnityShader(五)
这次要用表面着色器实现一个水的特效。先翻到最下边看代码,看不懂再看下面的解释。原创 2023-11-07 09:52:33 · 93 阅读 · 0 评论 -
万向节死锁
最开始接触这个概念是OpenGL书上的一道课后题说的,搜了一下后,我偶然发现之前在用Unity的过程中似乎不止一次的遇到过这种问题,就是当你想把一个物体的旋转由(a,b,c)通过插值平滑的过渡到(d,e,f)的时候,如果你用Vector3.Lerp(rotA,rotB,time.deltaTime)的话(rotA,rotB为两个Vec3,即表示欧拉角的向量)你会发现,十有八九会出现“抽搐”的情况,但是如果你用Quaternion.Slerp()进行转换,就不会有这样的问题,造成这个东西的根本...原创 2021-01-11 21:38:46 · 1439 阅读 · 0 评论 -
UnityShader(一)
背景小插曲:1999年,第一个CPU产生。有基于OpenGL的ShaderLanguage GLSL(依赖硬件,但能跨很多平台),基于DirectX的ShaderLanguage HLSL(不依赖硬件,不能跨很多平台),还有两者混合的Cg:真正意义上的跨平台,语法像HLSL,但无法完全发挥出OpenG的最新特性。 渲染流水:分为应用阶段,几何阶段,光栅化阶段,如下图: 应用阶段是Cpu全权负责,主要做三件事:1....原创 2021-01-11 19:04:00 · 145 阅读 · 0 评论 -
UnityShader(三)
凹凸映射分为:高度映射,模型空间下的法线映射,切线空间下的法线映射。 高度映射:只要改变法线的值就能获得不同的凹凸效果,也就是(r,g,b,a)->1白 高,0黑 低。 法线映射又分为模型空间下和切线空间下。纹理->法线->分量范围(-1,1),贴图->(0,1)。pixel = n * 0.5 + 0.5。 n = 2 * pixel -1。 模型空间下(绝对的法线信息)->不能换模型。n = (0,1,0)->纹理RGB(0.5,...原创 2021-01-11 20:46:59 · 110 阅读 · 0 评论 -
UnityShader(二)
光照模型:1.漫反射模型(Lambert),公式如下:C反指的是反射光线的强度,C光指的是入射光线的强度,m物指的是物体的材质反射系数,l向量指的是反射光线对应的向量,n向量指的是法线向量。因为,l向量与n向量都是单位向量,所以点乘积得到的结果实际上是cosθ。放在顶点着色器,代码如下:Shader "Unlit/005"{ Properties { _Diffuse("Diffuse",Color) = (1,1,1,1) } SubSh原创 2021-01-11 20:15:44 · 178 阅读 · 0 评论