1.模型自身坐标位置与颜色的映射Shader "Custom/RGBCube" { SubShader { Pass { CGPROGRAM #pragma vertex vert //顶点着色器入口函数声明 #pragma fragment frag // 片段着色器入口函数声明
Unity自带的Outline 效率实在太差。 找了 基于Shader实现的UGUI解决方案效果还不错,overdraw和顶点数都不高。 不过方案有2个问题,自己尝试调整了一下, 代码放在这以供参考吧。(注:把ui存储prefab,运行时动态挂到一个canvas上, 这个canvas 如果 additionalShaderChannels 不会自动添加那几个, 主canva
转载 2024-05-21 11:21:43
1421阅读
参考文章:方法一:对指定Layer层(Outline层)的物体进行处理原理:使用一个只渲染Outline层的摄像机进行渲染,将渲染结果存入临时渲染纹理rt,再利用Graphics.Blit(rt, destination, targetMat, 0); 函数使用targetMat材质的shader的第一个Pass进行渲染,即对Outline层的物体进行边缘检测,然后将被认定为边缘的屏幕像素点替
转载 2024-05-07 08:16:04
1420阅读
一、基于菲涅尔反射的物体        1.1 基于内边缘发光的方式                内边缘发光本身的局限性就不说了。  
  效果是游戏里面非常常用的一种效果,一般是为了凸显游戏中的某个对象,会给对象增加一个效果。本篇文章要和大家讲的是Unity 2D的游戏项目中的实现方法,下面是具体的实现过程。    需求介绍:   我们的项目是一款2D骨骼动画角色的战棋类回合制游戏,场景如下:   每回合开始,回合方在战场上的角色,分别有可移动、可攻击或者可移动并且可攻击3种状态,为了让玩家一目了然场上角
转载 2024-05-10 17:01:16
187阅读
模型1: LOL里面的模型效果,点击防御塔会有的效果,被攻击的时候模型也要凸显一下2: 网上可以找到模型的Shader,可以直接下载使用,一组第三方的Shader, 帮我们解决了模型的问题,叫Toony(第65)  Shader切换1.被攻击的时候模型凸显一下,不被攻击的时候就隐藏,变成正常模型的样子2.需要一个带模型的Shader和一个不带
转载 2024-03-26 14:42:30
132阅读
在Shader中使用单独一个Pass渲染轮廓线是非常常见的做法,其原理是在该Pass的顶点着色器中将模型顶点加上沿法线方向的偏移是原本的模型扩大一圈并剔除正向面,从而实现轮廓线效果。 但是使用该方法有一个要求就是模型的法线必须连续,也就是模型必须光滑表面,如果是硬表面的模型,由于转折处法线不连贯,会导致沿法线扩大的轮廓线模型断裂,如下图: 原因是转折处法线不连贯: 解决方案有二,但思路是一样的,就
前言1、前段时间工作,需要给模型,由于对Shader不熟悉,就直接网上找了Shader文件,无奈项目发布环境是WebGL,WebGL对Shader的需求比较特殊,故无法使用。2、因为项目需要的物体并不多,所以萌生出,动态生成整个模型所有的(线条),给各个附上需要的材质球即可。(当然,也可以直接请美术在模型,但这样不能实现泛光之类的效果)3、现写下三种实现模型的方法,方便日
转载 2024-02-12 07:56:43
456阅读
写在前面风格化不像PBR,好像没有套路可言,,,简直是《怎么好看怎么来》的最大化实践了!感觉出的PBR+NPR也是为了更好地利用PBR资产才诞生的这样一个渲染方案。(当然我的评价非常非常的片面,瞎说的)偶然间看到了b站一位大佬在blender里实现的效果(原链接【blender】传统PBR转风格化三渲二无主之地风格,作者甚至还提供了Blender源文件,感恩TAT): 直接截图的Blend
转载 2024-05-16 02:04:24
195阅读
按照惯例,先上图: 效果分析整体上效果在模型外包围,且永远在模型后面边缘噪波两层思路分析效果上模型渲染相对分离,且要控制附魔效果的出现与消失,初步思路使用双Pass对卡通模型和附魔效果分别渲染。之前的卡通渲染shader可以直接使用UsePass进行复用由于之前使用的ToonLit shader是表面着色器,如下图,我保留了前向渲染(forward)与延迟渲染(de
索引1. 给Unity内置的基础shader添加自定义属性2. 免费插件QuickOutline3. 整合:把QuickOutline的功能写进Unity内置的shader4. LWRP实现multi-pass 1. 给Unity内置的基础shader添加自定义属性 (不要被第一张图劝退,最终效果图在最后面>.< 很完美的~~) 我尝试的这种方法,边缘有断开的bug,解决方法
       卡通风格是游戏中常见的的一种渲染风格。使用这种风格的游戏画面通常有一些共有的特点,例如物体都被黑色的线条,已经分明的明暗变化等。       要实现卡通渲染的方法有很多,其中之一就是使用基于色调的着色技术。在实现中,我们往往会使用漫反射系数对一张一堆纹理进行采样,以控制漫反射的色调。  &n
文章目录一、前言二、2D效果1、导入一张png素材图片2、创建一个Unlit Graph3、使用Sample Texture 2D采样图片4、显示的思路5、使用Tilling And Offset节点控制UV,实现图片平移6、得到轮廓7、与原图相加8、最终显示三、升级版1、带颜色的2、噪声3、再加点变化 一、前言我之前写了一篇文章:ShaderGraph使用教程与各
转载 2024-03-17 09:50:47
792阅读
效果一览外是许多游戏的画面需求,通常大体分为法线外扩和后处理边缘检测两种,法线外扩通常用于特殊需求,如外高亮关键物体,选中外高亮等,后处理边缘检测画面表现力更强一点,通常用于全屏的风格化,如卡通渲染,素描风格画面等(其实我也不清楚,凭感觉应该有这样的使用趋向区别),本篇文章主要讲解法线外扩外效果。 法线外扩外效果 基本原理一个shader两
周末了,最近北京总是莫名其妙的下雨,在家里呆着就不想动弹。最近一个星期一直在研究卡通材质,进而对如何边做了些尝试。第一种:在材质上,由美术组的同学在贴图上根据模型边缘直接绘制。优点:更具有艺术性以及可变性。缺点:工程量很大,人物角色无法,只对固定的场景及建筑可行。第二种:根据视角和法线来。dot(n,v)代码如下:Shader "Custom/dotSurfaceShader"
转载 2024-04-06 20:35:09
226阅读
前言在本文中使用的是基于空间的3D模型,着手于1条的2个邻接面,即退化四形进行边缘检测和绘制。本文读者默认为有图形学基础和编写Shader基础,若没有请先去把这些基础学习一下,再来阅读本文,否则可能会有阅读障碍。一、边缘检测算法3D模型有两种方式,一种是基于图像,即在所有3D模型渲染完成一张图片后,对这张图片进行边缘检测,最后得出效果。一种是基于空间,即针对3D模型的三角面三个顶
  最近遇到了一个非常奇葩的需求:半透明文本,并且要有。这简直就是简直了,然后美术小姐姐还说了一句:不就是加个么?我们一众程序员竟然无言以对,我内心:大姐,这是Unity,不是PS啊0.0  没办法,做不出来只能开始研究。那么为什么透明物体的如此难实现呢,我来分析一下。一、Unity自带的  首先来看Unity自带的,把参数调大就会发现,只是在四个方向多显示了几份。透明物体肯定
转载 2024-02-21 11:54:45
1481阅读
效果:绘制物体的外轮廓(不是所有的,只是最外围的),比如LOL中选中塔的效果:       这部分知识在ShaderLab开发实战详解有详细的说明,不过我做了修改,用另一种更简单的方法解决了在不写深度的情况下,被遮挡的问题。       原理:要画2遍,第一遍画稍
转载 2024-02-29 16:46:32
453阅读
前言在制作游戏时,可以遇到要对字体添加的需求,unity 的UGUI自带的OutLine组件,效果不好,宽度过大会出现穿帮,顶点数量也会增加,性能不好,如果对于有几百字,顶点数量会很多,而且无法扩展功能 可以看出Outline创建了4个方向的文字 Unity5.2以前的版本要求,每一个Canvas下至多只能有2^16-1=65535个顶点(使用2个字节(16位)存储顶点索引),超过就会报错
之前的文章中我们通过两种方式分别实现了效果,他们各有优缺点,也比较简单,今天我们来通过后期处理这种方式来实现效果,相对于之前两种实现方式要稍微复杂一点。后期处理的最终效果图如下:实现大致思路:首先我们添加一个额外的摄像机用来专门渲染需要的对象,通过设置摄像机的LayerMask即可,然后将摄像机的Render Target设置为我们设定好的一张Render Texture上,设置如
转载 2024-03-18 08:54:41
1798阅读
  • 1
  • 2
  • 3
  • 4
  • 5