
着色器特效
文章平均质量分 56
shader、glsl、hlsl着色器
千年奇葩
业务范围:3D引擎、游戏、Web前端、跨平台软件、aigc。最近看机会,求捞啊
展开
-
Unity shader glsl着色器特效之 模拟海面海浪效果
一个简单的海浪效果,通过波的叠加实现水面起伏的动效,再根据法线贴图和水花贴图来增强细节,最后通过调整uv的平滑移动来增强海浪移动的细节。前置效果图因为是很久以前写的文章,贴图已经找不到了,百度随便下载了两张看看效果水波部分使用4个不同参数的Gerstner波叠加,不同波长(10m/5m/3m/7m)不同传播方向(0°/45°/90°/135°),动态计算顶点偏移量:通过交叉计算切线/副切线生成基础法线,叠加噪声贴图增加细节:水花效果实现,基于表面坡度检测生成水花:光源反馈采用菲涅尔反射效果:动原创 2025-02-20 02:09:10 · 616 阅读 · 0 评论 -
用Shader glsl实现一个简单的PBR光照模型
PBR模型定义了各种光照属性,如基础颜色、金属度、粗糙度等,就像给物体设定各种 “性格特点”。顶点着色器负责把顶点从模型空间转换到裁剪空间,同时计算一些用于光照计算的参数,就像给顶点 “搬家” 并准备好 “行李”。而片段着色器是整个 PBR 实现的核心,计算每个像素的颜色。它通过采样纹理获取各种属性值,然后根据 PBR 光照模型计算漫反射和镜面反射项,最后结合环境光得到最终颜色,就像给每个像素 “化妆”,让它们看起来更真实。原创 2025-02-14 18:15:28 · 555 阅读 · 0 评论 -
unity3d 2018 3.5f3 shader graph 学习指南
shader graph 是unity比较具有革命性的工具之一。在这之前,视觉开发者不得不面对晦涩难懂逻辑复杂着色器编程语言,而有了shadergraph,只需模块化的设置和连接就能实现各种复杂的效果,简直酷炫的不行。本文记录我个人的学习过程和知识重点。我使用的unity3d版本是unity 2018.3f5安装shader graph1,工具栏-> window -> pack...原创 2019-04-19 18:35:12 · 698 阅读 · 0 评论 -
unity shaderlab 正向渲染 基础之渲染模式 使用正向渲染实现一个漫反射shader
一 基础简介1.1 光源类型【平行光】场景中唯一的全局光,光源信息可以影响场景中所有物体。【环境光】是Edit->Render Setting里面的Ambient Light的值。在Shader中获取它只需要访问全局变量UNITY_LIGHTMODEL_AMBIENT即可。它是全局变量,因此在在哪个Pass里访问都可以。【点光源】以一个中心点向周围扩散的光源,有衰退。【聚光灯】像...原创 2020-03-02 13:05:54 · 1622 阅读 · 0 评论 -
shaderlab 中 use pass、grab pass的用法
use passuse pass 用于帮助shader代码重复使用。使用步骤:1, 被引用的shader,在被引用的shader中定义shader名和pass名shader 1:// 定义shader 路径Shader "Unlit/shader1"{ Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } Pass { //定原创 2020-12-01 15:00:30 · 2055 阅读 · 0 评论 -
unity shaderlab特效之 建筑结构科技透视效果 贴近消失远离显示
公司需要做个建筑结构演示。看了产品经理的方案感觉实在太low,真的看不下去了。有些人就是,能抄就抄,如果没得抄就尼玛找借口说怕技术实现不了。于是我就极不情愿的修改了方案做了这个玩意。给他看的时候我告诉他:公司难得有我这么牛逼的技术,你们想象应该大胆点。其实不少科幻或动作电影中都有类似特效,实现起来并不复杂,只需要将三个小特效结合起来就能实现:建筑结构透视毛玻璃特效贴近显示先贴出最终的笑狗图~1 结构透视的shader其实就是半透明嘛,根据需求调整cull的面。这个过于初级我就不贴了。原创 2020-11-24 16:40:02 · 3892 阅读 · 9 评论 -
unity 自定义shader cginc 函数工具库并引用
定义工具库unity 自带多种shader工具库,比如所谓工具库 就是类似cging.shader之类的引用工具如果我们需要自定义该怎么办呢定义工具库文件在shader文件中引入原创 2020-11-22 14:45:03 · 6632 阅读 · 2 评论 -
unity 使用粒子系统 实现一个火焰燃烧效果
早在去年,我就打算写一套特效教程。但苦于生计,一直也没时间。希望新工作能多给我留点时间吧。哎。准备工作。本教程素材需要自己制作,需要的工具是ps、shader、unity。有不会的没关系。跟着步骤走就可以。步骤一:制作火焰素材制作素材我们只需要ps软件。进入软件后,首先删掉默认图层。使图片背景透明。打开ps后,点击左侧工具栏的钢笔在画布上拖出一个泪滴形状然后在图层窗口中点击路径选项卡,就能看到路径的图层了:然后用鼠标右键点击路径图层,就弹出了这个东东:点击建立选区选项,弹出选取设置窗口原创 2020-07-05 08:48:33 · 16590 阅读 · 13 评论 -
unity particle system 粒子系统 制作闪电放电效果
unity 粒子系统制作闪电制作闪电效果的方法有以下几种:2d动画方式(适合2d游戏的背景或范围技能,性能最好,效果看设计师水平)LineRenderer划1线的方法(可以动态设定起点和终点,适合需要指定放电目标的场景)trail拖尾的方法(同2)粒子系统的方法(性能最差,效果最好,花样最多最省事)本文描述粒子系统的构建方式创建粒子对象在Hierarchy窗口中点击右键 => particle system场景中即可出现粒子对象设置起点和粒子发射形状在Inspector创空原创 2020-06-22 03:19:21 · 11622 阅读 · 9 评论 -
普通渲染管线的shader转为LWRP/HDRP可编程渲染管线shader的2种方法
安装好LWRP或HDRP后,原有的shader就不能用了。需要转换成适用于可编程管线的shader才可以第一种方法:使用可编程渲染管线自带的工具自动转换点击工具栏 > Edit > RenderPipline > Upgrade Project Materials to …即可转换项目中或所选的shader。第二种方法:手动修改shader有时某些shader无法进行转...原创 2020-04-20 10:53:33 · 4889 阅读 · 7 评论 -
unity中shader Inspector 面板 的ui编写实现方法
一 Properties 类型首先介绍下shader的属性类型,Properties属性会暴露给unity 的 inspactor面板,相当于程序接口属性的结构:_CG变量名 (“unity可见的变量名”, 属性类型) = 值例:_Color (“My Color”, Color) = (1, 1, 1, .5)属性表类型说明属性值Int整型(.1, 2)...原创 2020-04-20 10:52:20 · 4731 阅读 · 3 评论 -
unity shaderlab 颜色渐变效果 代码+注释
原理两色渐变如图,在uv坐标系中像素(x,y)的取值范围是(0,0) - (1,1)设置_pos1的值作为区域限制,取值范围(0,1),然后判断当前像素的y值是否处于0-_pos1的区间,如果是就替换为_color1 - color2的过度色,否则就直接使用_color2的颜色_color1 - color2中的过度色,由0 -_pos1的比值定位,注意uv坐标系中左下角是原点右上角是重...原创 2020-03-21 07:25:02 · 7946 阅读 · 7 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调节颜色、抖动力度、间隔的定格动画抖动涂鸦效果】
sp抖动Shader "Custom/t2"{ //变量接口 Properties { _MainTex("Image", 2D) = "white" {} //线段长度 _LineLength("Length",float) = 1. //线段颜色 _LineColor("Color",C...原创 2020-02-19 12:40:51 · 1663 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调节力度、uv,可选择Sobel、Roberts、Canny算子的边缘检测算法描边效果】
【原理【:使用卷积的方法,每次检测像素时都计算他垂直或水平方向的周围像素。根据实现定义好的权重,判定是否存在水平或垂直的边缘像素。如果值足够大小则认为是边缘像素,就进行特殊处理。【特点【:支持调整力度,可选两种卷积算子的边缘检测。原创 2020-02-12 08:30:48 · 1741 阅读 · 1 评论 -
Unity ShaderLab特效教程 旋转特效 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调节角度和速度的旋转效果】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解可调节角度和速度的旋转效果基本原理就是:先获得当前uv的xy夹角角度,再根据中心点到边缘的距离增加扭曲力度,然后再逆运算取得uv的xy值。笑狗图代码Shader "Custom/旋转"{ Properties { _MainTex("贴图", 2D) = "white" {}...原创 2020-02-05 17:04:08 · 2007 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调整峰、频率、速度颜色的光线脉冲曲线效果】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解可调整峰、频率、速度颜色的脉冲曲线效果效果图代码// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/Curve"{ Properties ...原创 2020-02-04 02:53:52 · 1287 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调节尺寸、间距、颜色的格子效果】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解可灵活调节尺寸的格子效果使用比较余数范围值的方法,限定像素显示状态笑狗图代码// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/Curve"...原创 2020-02-03 03:14:39 · 1187 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【锐化效果】
锐化效果笑狗图Shader "Custom/BlurBox"{ Properties { //主贴图 _MainTex ("Main Textrue", 2D) = "white" {} //宽高比例 _BlurRate("width & height proportion", Range(0.00,...原创 2020-02-02 03:44:53 · 1388 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【2d流光边框效果】
2d流光边框效果Shader "Custom/Edge" { Properties { //边宽,边高,边色,闪亮颜色,善良速度 _EdgeWidth ("EdgeWidth", Range(0, 0.5)) = 0.02 _EdgeHeight ("EdgeHeigh", Range(0, 0.5)) = 0....原创 2020-02-01 04:05:30 · 1619 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【圆角加去锯齿】
https://www.cnblogs.com/liez/p/6917186.htmlhttps://www.jianshu.com/p/80a932d1f11eShader "Custom/RoundCorner"{ Properties { //贴图、角度 _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} ...原创 2020-01-28 02:18:30 · 1411 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【ugui和sprite动态生成阴影,可调节颜色和模糊】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解一个可调节颜色和模糊的ugui和sprite专用动态生成阴影的shader基本原理就是使用两个着色程序块,一个用于正常显示图片,另一个用于生成阴影。上笑狗图:Shader "Custom/阴影着色器"{ Properties { //图片设置 ...原创 2020-01-20 03:11:48 · 1670 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【将贴图转为马赛克效果】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解一个将贴图转为马赛克效果的shader:万恶的马赛克其实也是一种艺术风格,如果你在开发2d游戏不妨加上马赛克效果,不仅可以帮助你在美术上统一风格,还能有效规避一些细节瑕疵,而且马赛克还有一股浓浓的怀旧风。实现原理是将指定范围的uv坐标step化,并应用再像素上下面奉上笑狗图:Shader...原创 2020-01-19 16:59:39 · 1368 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于sprite和ugui的2d着色器实例 代码+详解注释 【将sprite或ugui变为可调节的灰色图像】
如果代码中有什么不清楚请查看以下基础知识Shader基础知识unity3d 中 七种坐标知识详解一个可调节亮度和透明度的灰度图shader灰度可调,透明可调原图效果图Shader "Custom/灰度"{ Properties { _MainTex ("贴图", 2D) = "black" {} _Color ("颜色", Col...原创 2020-01-19 10:19:55 · 1398 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【可调节缩放、力度的扭曲效果】
如果代码中有什么不清楚请查看以下基础知识。原创 2020-02-05 04:10:36 · 1976 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于sprite和ugui的2d着色器实例 代码+详解注释 【波浪起伏的扭曲动画效果】
适用于sprite和ugui的波浪动画shaderShader "Custom/wave"{ Properties { _MainTex ("图片", 2D) = "black" {} _Height ("波浪高度", Range(0, 2)) = 1 _Width ("波浪密度", Range(0, 100)) = 50 _...原创 2020-01-17 11:05:56 · 1636 阅读 · 1 评论 -
Unity ShaderLab特效教程 适用于贴图、sprite和ugui的2d着色器实例 代码+详解注释 【滤波模糊效果】
BlurGauss 效果: 高斯模糊 原理: 采样周边8个相邻像素的颜色,与当前像素颜色按比例混合(高斯滤波器)Shader "Custom/BlurGauss"{ Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} _TexSize("Texture Size", v...原创 2020-02-02 02:45:39 · 1183 阅读 · 1 评论 -
Unity ShaderLab特效教程 着色器实例 代码+注释 【沿x轴y轴方向移动贴图动画】
沿x轴y轴方向移动贴图动画设置移动速度和贴图,就动起来了Shader "Custom/ScrollSurfaceShader"{ Properties{ //叠加颜色 _Color("Color", Color) = (1,1,1,1) //指定贴图 _MainTex("Albedo (RGB)", 2D) = "white" {} //光泽 _Glossiness...原创 2020-01-13 12:14:00 · 791 阅读 · 1 评论 -
unity shaderlab 深度图相交高亮应用:护盾/能量场交界高亮特效
笑狗图效果原理及实现步骤利用深度图获取两个模型相交位置并进行处理【实现步骤】获取屏幕xyz坐标根据屏幕坐标找到缓冲中已存在的像素的深度信息对比当前像素的深度信息很缓冲中像素的深度信息,如果在一定范围内,就说明有重合修改颜色。shader代码Shader "Kaima/Depth/ForceField"{ Properties { _RimColor("Rim Co...原创 2020-04-09 10:39:44 · 3600 阅读 · 1 评论 -
unity shaderlab 毛玻璃效果 周围发光效果 代码+详细注释
笑狗图实现原理将像素的法线和 从镜头到像素位置的方向 转为世界空间坐标计算镜头到位置方向 和 法线的夹角最终像素输出的颜色 = 夹角 * 颜色效果适用范围适用于穿透显形毛玻璃Shader代码Shader "Custom/Depth" { Properties { //贴图入口 _MainTex ("Texture"...原创 2020-04-06 14:26:16 · 2518 阅读 · 1 评论 -
unity shaderlab 深度图的实现过程 代码+详细注释
深度图,通过获取观察视角中,物体由近到远的深度信息,来实现与其相关的特殊效果。比如获取像素深度信息深度值是在像素信息中保存的[0,1]范围的非线性值,这些深度值来自裁剪坐标。在延迟渲染中,由于先经过深度测试,所以缓存中已经有了深度信息。在向前渲染中,由于还未经过深度测试,所以必须通过申请取得深度信息。Unity会自动利用Shader Replacement将RenderType为Opaq...原创 2020-04-05 15:35:16 · 3358 阅读 · 1 评论 -
unity C# 脚本控制Material、Shader的方法 以及问题解决
脚本控制shader的设置方法 // 设置贴图 Texture mTexture = Resources.Load("myTexture", typeof(Texture )) as Texture; material.SetTexture("_MainTex", mTexture ); // 设置整数 material.SetI...原创 2020-03-29 09:49:53 · 19403 阅读 · 0 评论 -
unity shader 实现延迟渲染代码加注释
正向渲染与延迟渲染都是关于光照计算的渲染方法。他们的最终目的都是进行光照处理。他们最大的区别是正向渲染先计算光照信息再处理深度计算。而延迟渲染正相反,先进行包括深度在内的着色计算,再处理光照计算。https://www.jianshu.com/p/80a932d1f11ehttps://blog.youkuaiyun.com/yangxuan0261/article/details/90182143一 ...原创 2020-03-27 17:10:44 · 3858 阅读 · 3 评论 -
unity ShaderLab 基础之【模板测试 StencilTest】StencilTest命令详解
模板测试 StencilTest啥是模板测试,每个像素都有一个stencil值,在同一个像素上,所有shader的stencil都共享这一个值,当有其他带有遮罩像素与其重合时就能获取到该值,并根据自身的stencil值处理或。典型的应用就是遮罩显示。你可以选择每次重合都增加1,然后再指定某个物体,当值达到某个数量级再显示。这样的场景,比如,有个隐身的怪物,你只有使用圣水喷雾才能让他现行,但必须喷...原创 2020-02-12 09:25:15 · 2494 阅读 · 2 评论 -
unity ShaderLab 基础之【像素混合Blend】Blend命令详解 shaderLab blend blendOp透明度颜色混合
一 基础介绍1 混合设置当前物体与场景物体重合时该如何显示。2 缓冲区【颜色缓冲区】:也叫帧缓冲区,场景中的物体的像素都要写入该缓冲区,然后再渲染到屏幕上显示【深度缓冲区】:用于记录颜色缓冲区中每个像素的深度值,通过深度缓冲区,我们可以通过深度测试来确定像素的遮挡关系【模版缓冲区】:与深度缓冲类似,但这个值是可以自己设定的。,通过设置每个像素的模板缓冲值,就可以指定只渲染某些像素,用...原创 2020-02-11 04:50:22 · 7305 阅读 · 3 评论 -
unity ShaderLab 基础之【UnityCG.cginc 库】命令详解
UnityCG.cginc 库UnityCG.cginc 该文件中包含了很多即成的参数方法。使用十分方便引入文件CGPROGRAM#include "UnityCG.cginc"ENDCGunitycg.cginc 常用结构命令参数实例说明appdata_base顶点位置、顶点法线、第一组纹理坐标float4 vertex : POSITION; ...原创 2020-02-09 05:40:30 · 6305 阅读 · 0 评论 -
unity ShaderLab 基础之【着色器中的参数】命令详解
着色器中的参数从应用阶段传递模型数据给顶点着色器时 常用的语义命令实例说明POSITION模型空间中的顶点位置,一般是float4类型NORMAL顶点法线,float3类型TANGENT顶点切线 float4TEXCOORD0~N该顶点纹理坐标,0是第一组,一般是flkoat2 或float4类型COLOR定点颜色,通常是fix...原创 2020-02-09 05:38:43 · 1844 阅读 · 1 评论 -
unity ShaderLab 基础之【透明测试AlphaTest】AlphaTest详解
一 基础介绍1 透明度当一个具有透明度的物体挡住另一个可见问题时,光线会穿过带有透明度的物体,使我们能看到后面那个物体的信息。一般情况吓alpha的值区间为(0-1),0为完全不可见,1为完全可见。2 缓冲区【颜色缓冲区】:也叫帧缓冲区,场景中的物体的像素都要写入该缓冲区,然后再渲染到屏幕上显示【深度缓冲区】:用于记录颜色缓冲区中每个像素的深度值,通过深度缓冲区,我们可以通过深度测试来...原创 2020-02-09 05:09:38 · 4598 阅读 · 1 评论 -
unity ShaderLab 基础之【深度测试DepthTest】ZWrite、ZTest详解
Z 深度Z 就是深度轴,在一般3d软件中,x是横轴,y是纵轴,z是深度轴。离摄像机越近值越小,反之则越大。深度决定渲染的先后顺序。值大的像素会被值小的像素覆盖。缓冲区【 颜色缓冲区】:也叫帧缓冲区,场景中的物体的像素都要写入该缓冲区,然后再渲染到屏幕上显示【深度缓冲区】:用于记录颜色缓冲区中每个像素的深度值,通过深度缓冲区,我们可以通过深度测试来确定像素的遮挡关系【模版缓冲区】:与深度缓...原创 2020-02-08 17:01:50 · 5586 阅读 · 1 评论 -
计算机图形学 Unity ShaderLab 颜色混合运算相关计算方法
本文使用shader语法已知颜色A与颜色B,颜色A覆盖在颜色B上,最终输出的结果为颜色C,B为基色,A为混合色,C为输出色正片叠底描述:颜色叠加,使像素重合部分的颜色更暗。像素覆盖顺序随意调换不会改变结果公式:C = ABshader代码:fixed4 C = A * B;滤色描述:与正片叠底相反,重合部分的像素更亮公式:C = 1-(1-A)(1-B)shader...原创 2020-02-07 15:53:23 · 4551 阅读 · 0 评论 -
Unity ShaderLab 坐标空间转换及方法
空间转换v2f vert (a2v v){ v2f o; //将顶点从模型空间转换为裁剪空间,因为2d就是平面映射。 o.vertex = UnityObjectToClipPos(v.vertex); //将顶点从模型空间转换为裁剪空间,因为2d就是平面映射。 o.vertex = UnityObjectToClipPos(v.ver...原创 2020-01-27 11:04:16 · 4612 阅读 · 1 评论