Unity&Cg Shader
文章平均质量分 82
在Unity中使用Cg语言来写你想要的Shader
凯尔八阿哥
佛系码农
展开
-
Unity&Shader案例篇—屏幕渐暗效果
一、前言本文使用版本为Unity5.3.3,两种实现方法得到的效果是一样的,侧重点不一样,择其良者而用之。二、第一种方案1、效果图如图所示2、制作步骤首先是C#脚本部分,前面的几章基础篇里面已经提到过这个脚本了,代码如下:using UnityEngine;using System.Collections;public class OVRScreenFade2原创 2016-11-28 21:44:53 · 7782 阅读 · 0 评论 -
Unity&Shader案例篇—火焰
一、前言1、效果图如图所示:2、使用的Unity版本为Unity5.3.3二、制作方法1、C#部分的代码如下:using UnityEngine;using System.Collections;[ExecuteInEditMode]public class CamRendImage : MonoBehaviour { [SerializeField] pri原创 2016-11-30 21:49:07 · 12425 阅读 · 3 评论 -
Unity&Shader高级篇-渲染路径(Rendering Paths)
一、前言在Unity的Camera中常常会看到一个Rendering Paths的选项,里面有5个选项,其中两个比较重要的选项分别是“Deferred Shading”和“Forward Rendering”,在我还是初学Unity的时候,并没有在意太多。如今随着学习Shader的深入慢慢领会到了这两个渲染路径的重要性。下面就这两个渲染路径的区别和优缺点做一个学习记录。主要参考文献维基百科原创 2016-12-04 18:00:46 · 6279 阅读 · 2 评论 -
Unity&Shader高级案例篇—图形命令缓冲
一、前言上一章讲的到底有什么用呢?带着此疑问你可以耐心的看看这篇的介绍。继上一篇文章点击打开链接,本篇其实算是Unity中渲染管线的一个拓展。当然也要在理解了上一章的内容之后看这篇的例子就会有一个形象的概念。在Unity5中已经有了很多开发者可见的图形渲染功能,诸如标准着色器(Standard Shader)、实时全局光照(realtime global illumination)、反射探原创 2016-12-04 21:07:51 · 2274 阅读 · 0 评论 -
Unity&Shader基础篇—轮廓增强
1、介绍:如图所示,两个胶囊体都是采用同样的透明度混合方程进行混合的,并且颜色和透明度都一样。而左边的对透明度进行了“特殊”的处理,就得到了和右边不一样的效果:胶囊体的边沿轮廓增强。配合采用贴图的效果如图所示:两者都是采用了一样的透明度贴图以及透明度混合方法,左边的是采用了轮廓增强的效果图。2、原理:首先,计算出模型表面的轮廓,这不废话吗,其实还真不是废话,因为并不原创 2017-04-17 11:44:38 · 4006 阅读 · 0 评论 -
Unity实用小工具—画二维动态曲线
一、前言 之前用Line Render实现过这个动态曲线的绘制,使用这个实在太不方便了,一直寻思怎么在一张图片上通过控制图片的像素值实现曲线的动态绘制。参考了Unity的官网教程实现了这个,效果图如图所示:这样实现的效果比LineRender 要好,并且不怎么消耗计算和渲染二、实现1、代码创建一个背景贴图,并将这个贴图给UGUI的RawImage控件 //创建背景贴图 w...原创 2018-03-01 17:19:28 · 4918 阅读 · 1 评论 -
Unity&Shader案例篇—角色动态地面印记
一、介绍 本篇要介绍的效果如图所示:角色在地形上行走,地形上始终会有一个动态圆环跟随角色,类似于阴影的一个效果。但是这个“阴影”是我们可以自己控制它的效果的,如图2所示是通过修改后得到的效果图:圆环是有一定频率别的收缩,这种效果在游戏中我们经常能看到。二、实现1,简单圆环版本实现一的效果的Shader为Shader "Custom/RadiusShader" { Properties {...原创 2018-05-07 17:44:02 · 2984 阅读 · 2 评论 -
Unity&Shader案例篇—地图上热图分布
一、介绍 在2维平面地图上随机或者指定位置生成一系列的热量、能源或者其他需要表示的信息的分布图。可以通过切换不同的贴图表示不同的信息,如图所示表示的是该地区的降水量的变化如图所示为表示该地区的温度变化分布图二、实现 在贴图的的某个位置处绘制指定半径的圆圈,然后调整圆圈的强度也即透明度。因此Shader部分会定义这两类变量,因为Shader里面不能定义没有长度的数组,只能一...原创 2018-07-09 18:29:06 · 4374 阅读 · 5 评论 -
Unity&Shader案例篇—旋转、平移和缩放
一、前言 在Unity中通过控制物体的Transform可以很容易的对物体进行旋转、平移和缩放,得到一些简单的动画效果。但是有个不好的地方是,一旦这个物体上有碰撞体的话,会跟环境发生碰撞。我就就想能不能在不麻烦特效动画那边的情况下,自己用Shader去处理一些基于模型顶点或贴图的dong动画效果。如图所示是我完全使用Shader处理处理的顶点的xuan旋转、平移和缩放,另外还有两个是贴...原创 2018-07-25 17:28:15 · 11414 阅读 · 0 评论 -
Unity&Shader案例篇—绘制雨滴
一、前言惯例先上效果图,本文不只是简单的绘制雨滴,同时处理了摄像机不同朝向看到的雨滴下落的方向也不一样。二、方法1、绘制雨线:绘制雨使用的是C#脚本绘制的,脚本为:using UnityEngine;using System.Collections;public class Debris : MonoBehaviour{ const int POINT_MAX = 4原创 2016-11-24 21:21:25 · 5901 阅读 · 0 评论 -
Unity&Shader基础篇-常用函数的使用与案例
一、前言继前面的系列文章之后,本篇继续讲解Cg的常用函数的使用案例,帮助巩固Cg语言的基础知识。这些函数都可以在Cg的教程里The Cg Tutorial找到示例代码和函数意义。本文讲解几个常用的函数,分别有1、Step(a,x):如果x或=a返回12、Clamp(x,a,a):如果xb返回b;如果在a和b之间就返回x3、smoothstep(min,max,x):返回的值为–2*原创 2016-11-14 20:29:33 · 12632 阅读 · 4 评论 -
Unity&Shader案例篇—五子棋
一、前言尊重原创,转载请注明出处凯尔八阿哥专栏上篇Unity&Shader基础篇-绘制网格+圆盘已经讲到了通过绘制网格和圆盘的结合实现了在网格中绘制棋子的效果,但是遗憾的是只能绘制一个点,一旦点击其他的网格交叉点,点就会绘制到新的位置。那么,是不是可以通过保存上一个点状态来实现同时绘制多个点的效果,进而实现五子棋呢。答案是肯定可以的,接下来就是要讲怎么实现这个效果。惯例先上效果图:原创 2016-11-07 21:52:20 · 3293 阅读 · 1 评论 -
Unity&Shader基础篇-绘制网格+圆盘
尊重原创,转载请注明出处凯尔八阿哥专栏上一章点击打开链接中已经画出了一个棋盘网格,首先来完善一下这个画网格的Shader,添加属性,属性包括网格的线的宽度,网格的颜色等。代码如下:Shader "Unlit/Chapter2-2"{ Properties { _backgroundColor("面板背景色",Color) = (1.0,1.0,1.0,1.0) _axesColo原创 2016-10-29 20:29:47 · 9958 阅读 · 3 评论 -
Unity&Shader基础篇-绘图2D图形
一、闲言碎语唠叨两句原文转载请注明出处点击打开链接有了前面的几章的基础,接下来我们就可以编写一些案例来训练和强化Shader编程。本章和接下来的几章都会是在屏幕上绘制2D的图像,因此需要建立一个绘制的平面,类似于UI系统的一个Panel。代码如下:using UnityEngine;using System.Collections;[ExecuteInEditMode]public原创 2016-10-25 21:06:50 · 15120 阅读 · 4 评论 -
Unity&Shader基础篇-概述
最近在学习Shader,将学习的一些心得和案例以及基础知识罗列了一下。这一篇是unity之Shader的基础篇之基础,更多的是一些概念。该篇将分以下几个部分:1、什么是Shader?2、GPU和Cg语言3、Unity中使用Cg语言如何编写Shader?1、什么是Shader?1.1、Shder的概念:Shader即着色器,是一款运行在GPU上的程序,用以对三维物体进行着原创 2016-07-18 11:21:28 · 4311 阅读 · 2 评论 -
Unity&Shader案例篇-镜子1
废话不多说先上效果图,我使用的是在Unity5.3.3版本。一、原理1、首先要准备的素材是三个,对没错,就是三个因为镜子里面的那个物体其实是实物的复制体而已;一个Plane作为镜子,还有一个实物和虚物体。2、新建一个材质使用下面的Shader代码,并将此材质球赋给那个虚物体Shader "Custom/Cg shader for virtual ob原创 2016-08-26 09:39:36 · 4792 阅读 · 2 评论 -
Unity&Shader案例篇-镜子2
一、前言上一篇介绍了有关镜子的制作,有关理论部分的内容我会在后续相关的文章中陆续介绍,莫急,我先趁着自己脑子还是对此技术比较热,趁热打铁尽早把实现部分先写出来。上一章的介绍制作的镜子其实只是一个取巧的方法,并不能做到实时的反射出实物,但是思路还是比较有意思的。还是废话不多说先上图,我用的Unity奔波5.3.3二、Unity中制作原理1、简单说明:其实这个原理就是用一个摄像机去拍镜原创 2016-09-01 21:32:01 · 7609 阅读 · 2 评论 -
Unity&Shader基础篇-可编程GPU图形绘制管线
Cg是最早的为可编程图形硬件设计的高级编程语言。它是英伟达和微软公司一起合作开发出来了语言,如果你非常熟悉C语言或者其他的编程语言,如C++、C#或者Java等,那对于Cg语言你将会非常容易掌握。Cg程序通常都比较的小,结构也非常的简单,尽管如此,不了解基本的Cg语言的语法和它的运行机制也是很难理解一段Cg程序到底做了什么以及要怎么控制它到达预期的效果1.1、可编程GPU图形绘制管线 所原创 2016-10-18 16:58:34 · 2118 阅读 · 1 评论 -
Unity&Shader基础篇-Cg语法
1.2、Cg语法基础 如C++、C#和Java等高级语言一样,Cg语言也有自己的数据类型和关键字。掌握和理解这些关键字是写好Cg程序的基础。1.2.1、Cg的数据类型与关键字基本数据类型:Cg支持7种基本的数据类型1、float,32位浮点数据,一个符号位。浮点数据类型被所有的图形接口支持;2、half,16位浮点数据;3、int,32位整形数据4,fixed,12位原创 2016-10-18 17:07:25 · 7390 阅读 · 1 评论 -
Unity&Shader基础篇-“Hello Cg”
1.3.1、从简单的模板程序开始1、打开Unity程序,在Project中选择Create 选择Shader>Unlit Shader。程序的名字最好和shader的用途有关联,让人一看就知道这个shader是用来做什么的。2、将下面的模板程序复制到这个新建的Shader程序文件中,替换Unity自动生成的代码。程序注释部分给出了每一行代码的含义。Shader "Cg Minima原创 2016-10-18 17:22:27 · 3619 阅读 · 3 评论