TA
文章平均质量分 80
1eonleonChan
本科在读大四学渣
展开
-
【UE5】自定义环形进度条、方形进度条
(中间为透明,外部为白色的png图片)方形:星形:将上图导入到UE5中,再拖入到我们的Material中,连线如下:如果将图片换成1.3的星星,那么效果如下(圆形同理,可以在iconfont网站自己找一个即可。)这一步是使用 TexCoord(快捷键:U),结合 CustomRotator 节点,进行时钟旋转。而控制这个进度条的就是 Percent 参数。而进度条的进度也是根据该参数改变而改变:将1.4和1.5的结果相融合,使用Multiply节点即可。原创 2022-10-24 09:36:58 · 1917 阅读 · 3 评论 -
【Unity Shader】(9)透明度测试 和 透明度混合 的案例与分析
Unity Shader 透明度测试和透明度混合关于透明度测试和透明度混合的理论部分可以翻阅上一篇博客【Unity Shader】(8)透明度测试与透明度混合的理论基础,本节主要是根据《Unity Shader入门精要》,将代码整理。透明度测试概念:只要一个片元的透明度不满足条件(通常是小于设定的阈值),那么其对应的片元就会被舍弃。(被舍弃意味着——不会进行任何处理,包括颜色缓冲),如果大于设定的阈值,则会按照普通的不透明度物体的处理方式来处理该片元。方法:通常是在片元着色器中,使用clip函数原创 2022-04-30 20:27:42 · 1464 阅读 · 2 评论 -
【Unity Shader】(8)透明效果 透明度测试 和 透明度混合 控制 深度缓冲 与 颜色缓冲 并调整 渲染顺序
Unity Shader实现全透明和半透明效果实现透明物体的两个方法:※ 对于不透明物体,我们不必考虑它们的渲染顺序也可以得到正确的渲染结果。因为Unity中强大的深度缓冲(Depth Buffer 或称作 Z-Buffer)可以帮助我们完成物体的前后效果。※ 对于半透明物体则需要使用透明度混合,且需要正确的渲染顺序。透明度测试(Alpha Test)使用的是一个极端霸道的机制——只要一个片元的透明度不满足设定的阈值,那么直接丢弃该片元。被丢弃的片元不会再进行任何处理(包括颜色缓冲);但原创 2022-04-14 23:35:44 · 3832 阅读 · 0 评论 -
【Unity Shader】(7)渐变纹理 控制漫反射光照效果 (动漫风、插画风的理论)
在Unity Shader中实现渐变纹理,并控制漫反射光照效果回顾我们之前写过的基础纹理贴图,我们设置了一个固定的“BaseColor”来控制材质球的基底颜色。那有没有一种可能,让我们的材质球,根据不同阴影部分或者顶点信息,来改变我们的基地颜色呢?——答案是渐变纹理。渐变纹理渐变纹理最早出现在Gooch等人在1998年发表的一片著名的论文《A Non-Photorealistic Lighting Model For Automatic Technical illustration》提出,作者提出了一原创 2022-04-10 19:56:41 · 2835 阅读 · 0 评论 -
【Unity Shader】(6)凹凸映射 实现材质的 法线贴图 和 高度图(Normal Map And Height Map)
在Unity Shader中用法线贴图和高度图来实现凹凸映射1、凹凸映射概念凹凸映射,在不改变顶点位置的前提下,修改模型表面的法线方向,为模型提供更多的细节。2、凹凸映射的 2 种方法高度纹理(Height Map)使用一张高度纹理来模拟表面位移(Displacement),然后得到一个修改后的法线值。此方法也叫做高度映射(Height Mapping)。颜色越浅,越向外凸;颜色越深,越向内凹。能明确表面的凹凸信息,缺点是计算复杂。法线纹理(Normal Map)使用一张原创 2022-04-09 17:40:11 · 3434 阅读 · 1 评论 -
【Unity Shader】(5)基础纹理 将图片映射到材质上(代码部分)
将单张纹理映射到材质球本章节分为代码部分和概念部分,概念部分明天再写,今天先开摆!在最初的游戏行业,游戏中的物体都是使用一张图片来控制模型外观的,将“纹理映射”直接“黏”在 模型的表面,再通过“逐纹素(texel)”来控制模型的颜色。这里的“纹素”其实就是为了区分“像素”而诞生的名词,在纹理中的每个单位,即为纹素。根据上文,可以轻松的得知,我们需要如何将贴图(也就是我们的纹理图片)映射到模型上——通过纹理展开技术,将纹理映射坐标存储在每一个顶点上。纹理的坐标还有一个重要的便是unity中的“纹原创 2022-04-06 22:16:41 · 4197 阅读 · 0 评论 -
【Unity Shader】(4)Blinn-Phong 高光反射模型 实现 高光反射效果
在Unity Shader中使用Phong-Blinn高光反射模型来优化高光反射。对于Phong高光反射模型可以查看之前写的这篇文章Blinn高光反射模型在Blinn模型中,引入了一个新的矢量 h,它是通过对视角方向 v 和光照方向 I相加后再归一化得到的值。代码从代码上来看,Phong-Blinn更像是 Phong的逐像素高光反射的变种。因为进改变了其在片元着色器的部分代码。完整代码如下:// Upgrade NOTE: replaced '_Object2World'原创 2022-04-05 23:39:28 · 671 阅读 · 0 评论 -
【Unity Shader】(3)Phong光照模型 逐顶点光照 和 逐像素光照 分别实现 高光反射光照模型
使用逐顶点光照和逐像素光照分别在unityShader中实现高光反射光照模型**Phong高光反射模型**Phong高光反射模型 共有4个参数入射光线的颜色和强度—— C light材质的漫反射系数—— M specular视线向量—— v反射方向—— r为了避免 v 和 r 的点积为负值,我们需要使用max来操作。但在Unity Shader中,我们可以使用 saturate(x)函数达到相同的效果。其中的 r 可以直接使用如下公式计算:在计算 r 的过程中,可以直接使用CG原创 2022-04-05 23:19:11 · 732 阅读 · 0 评论 -
【Unity Shader】(2)半兰伯特模型 构建光照
在unity的Shader中使用半兰伯特模型来构建光照在认识半兰伯特模型之前,建议查看一下我之前的兰伯特模型构建光照兰伯特光照模型半兰伯特光照模型由于兰伯特模型的计算公式仅截取了[0,1]的光照区间,因此可能会丢失掉阴影部分的暗部细节。而Valve公司在开发《半条命》的时候,提出了一个新的光照技术,该技术是有原兰伯特光照模型的基础上进行了一个简单的修改——因此被称为半兰伯特光照模型。广义的半兰伯特光照模型如下:和兰伯特光照模型类似,只是将Max函数替换成了(a·(n·I)+b原创 2022-04-05 21:33:38 · 690 阅读 · 0 评论 -
【Unity Shader】(1)兰伯特模型 逐顶点光照 和 逐像素光照 分别实现 漫反射光照模型
使用逐顶点光照在unityShader中实现漫反射效果漫反射公式首先需要了解基本光照模型中,漫反射(Diffuse)其中共有4个参数入射光线的颜色和强度—— C light材质的漫反射系数—— M diffuse表面法线—— n光源方向—— I为了避免 n 和 I 的点积为负值,我们需要使用max来操作。但在Unity Shader中,我们可以使用 saturate(x)函数达到相同的效果。其中,x可以是操作的标量或矢量,即float、float2、float3等类型satura原创 2022-04-05 18:28:49 · 1578 阅读 · 1 评论 -
【Unity Shader】(0)超详细】Unity Shader 的三种调试方法 Graphics Debugger 与 帧调试器
Unity Shader 的三种调试方法假色彩图像(false-color image)法Graphics Debugger帧调试器假彩色图像法(与之对应的是真彩色图像(true-color image))使用一张假彩色图像用于可视化数据。由于颜色的分量区间为[ 0 , 1],且当颜色分量小于0时,会被设置为0,颜色分量大于1时,会被设置为1。因此我们需要不断尝试,最后是得我们的颜色能够出现在 [ 0 , 1] 的区间内。当调试一维数据时,可以选择单独的颜色分量进原创 2022-04-05 00:11:47 · 3535 阅读 · 0 评论