koo叔说shader
文章平均质量分 75
主要以学习Unity中的Shader为主,介绍原理,简单Shader,高级Shader,及常用的设计技巧和算法。
小城码仔
简单,高效,自由
展开
-
Koo叔说Shader-调试Shader
前言当写的Shader出现了一些不是预期的效果时,可能需要对Shader进行调试。但Shader不像其它语言能加断点debug,也不能打印输出。输出的只能是颜色值,所以可以将想要看的变量变换成颜色值,可视化的来查看问题,当然这需要一些小小的转换。顶点数据从哪里来一般对Shader调试,主要是调试顶点数据及变换,那么顶点数据是如何设置到Shader中的呢?在Unity中,是由Mesh...原创 2018-07-25 09:03:16 · 2338 阅读 · 0 评论 -
Koo叔说Shader-描边效果
前言描边效果,在游戏中比较常见,实现方式也有好多种,今天主要讲一下比较容易理解的一种,需要用到两个pass实现。描边效果先看效果: 这个描边效果比较简单,这个动的贴图是屏幕空间计算的,顺便也说说屏幕空间计算。原理分析利用两个pass,第一个pass先画比模型大一圈的填充,第二个pass正常画贴图屏幕空间是取屏幕空间的点来实现一些特殊效果具体实现S...原创 2018-07-17 23:32:11 · 1635 阅读 · 1 评论 -
Koo叔说Shader-贴图切换
前言再介绍一个简单的效果,贴图切换,根据目标距离远近切换贴图贴图切换先看效果 随着小黄鸭的移动,贴图以小黄鸭中心为半径变化。这个方法可以做出许多效果,如放大镜效果,画圆形遮罩等原理分析主要就是根据提供的目标点(也就是小黄鸭的中心点)和贴图的距离进行不同的采样具体实现Shader "Unlit/TextureSwitch"{ Propert...原创 2018-07-05 23:36:25 · 597 阅读 · 0 评论 -
Koo叔说Shader—UV旋转
前言本次依然是在顶点Shader中做一些操作,效果是旋转UV最终效果如下:原理分析,主要解决两个问题如何旋转:通过构造旋转矩阵旋转的中心点,如何定位:可以先将中心点移到中间,旋转完再移回去旋转矩阵:M(a) = [cosa -sina] [sina cosa]具体实现Shader "Unlit/UV rotation"{...原创 2018-06-26 13:13:04 · 3470 阅读 · 1 评论 -
Koo叔说Shader—果冻效果
前言之前新建了一个Shader项目,并实现了一个基本的Shader结构,这次基于顶点变化,实现一个小的里冻效果。最终效果如下:原理分析这个效果只是对顶点位置的一个移动,并没有对显示做处理,所以只需要vertex Shader中实现就可以这个效果是周期性变化,很容易想到使用正弦波和余弦波来处理,也是物理上所说的简谐运动。正弦波的关键值sin{0=>0,90=&gt...原创 2018-06-24 22:44:57 · 5453 阅读 · 0 评论 -
Koo叔说Shader—最基本的Shader
写在前面看了许多Shader教程,也学到了一些常见的Shader效果,但还是有一些迷糊,不能灵活的运用。所以打算一步步从零开始,把Shader彻底搞明白。以此记录一下学习过程。Shader效果单个对象正确渲染出对象将对象设置成黄色(为啥是黄色,随便选的颜色:-))思路这里选择Quad作为渲染对象,顶点组成比较简单要正确显示出Quad,需要将顶点位置告诉GPU...原创 2018-06-20 17:12:41 · 2579 阅读 · 0 评论 -
Koo叔说Shader-- 熟悉渲染管线
前言前面几篇文章对Shader及CG语言做了大概的介绍,算是为了编写Shader做的前期准备,但在真正写之前还是有必要把渲染管线再详细说一下,这样在写Shader时,才能更加清晰明白每一步的意义渲染管线渲染管线主要是用于3D渲染,可以理解为一个流程,即CPU方面准备一些数据传给GPU,GPU对数据处理得出一张二维图像的过程。渲染流程主要分为几个大的阶段 - 数据准备阶段 - 顶...原创 2018-06-07 23:15:16 · 504 阅读 · 0 评论 -
Koo叔说Shader-CG语言介绍
前言开始着手写Unity Shader之前,有必要了解一下用什么语言来写,Unity支持自家的Surface Shaders,GLSL,Cg/HLSL这几种方式来写,经过比较决定使用Cg/HLSL来写,今天就来初步学习一下Cg/HLSL语言,为接下来的使用做准备。为什么Cg/HLSL是最佳选择GLSL:Unity支持GLSL,这是OpenGL的Shader语言,在GLSLPROG...原创 2018-05-31 22:33:09 · 1131 阅读 · 0 评论 -
Koo叔说Shader-Unity中的Shader
前言Unity有自己的一套Shader系统,叫ShaderLab,今天主要说一下ShaderLab的语法和Unity中的几种不同种类的Shader的区别及使用场景,并分别做一些例子说明。什么是ShaderLabShaderLab 是Unity3d自己封装的一个调用CG/HLSL/GLSL的接口,如果熟悉CG/HLSL/GLSL中的一种,理解起来会比较容易一些。ShaderL...原创 2018-05-24 23:10:30 · 608 阅读 · 0 评论 -
Koo叔说Shader—Shader简介
前言Shader的介绍有很多,在这里,将从以下几个方面来介绍: - 什么是Shader - Shader的主要作用 - Shader的种类 - Shader的结构什么是ShaderShader的意思是着色器,是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行,语法类似C语言,有自己的编译器。编译,链接后,由CPU送入GPU中执行。Shader的执行入口也...原创 2018-05-17 22:16:39 · 1659 阅读 · 1 评论 -
Koo叔说Shader—开篇
开篇Shader在游戏开发中,占据着比较重要的地位,不仅在于现代图形API(如OpenGL,Direct3D,Metal等)都将Shader作为渲染流水线中的必须存在的一环,而且在游戏中的许多酷炫的特效,都能通过对Shader的灵活运用而实现出来,同时也能充分发挥显卡的特性及开发人员的创造力。 然而在实际开发中,好多程序员对Shader都一知半解,不能灵活运用,写出效率好的效果,所以特此开设...原创 2018-05-14 23:49:57 · 495 阅读 · 0 评论