自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(55)
  • 收藏
  • 关注

转载 [小明学Shader]15.基于Grid的地形混合shader

1.写在前面  好久没有写博客了,最近面试不太顺利,认识到应该把学习心得或者说是结果都落实到博客上来,一来加深印象,二来有利于自我展示.  本片博客的内容是讲地形纹理混合,是关于手游sgl大地图的shader实现.  slg大地图,如cok,是很大的.在渲染时,只渲染屏幕周围的一部分.  在渲染屏幕地形时,会提供一组地形数据,shader会根据地形数据对地形进行混合....

2019-06-13 19:27:00 207

转载 [Unity]浅谈AssetBundle的依赖关系打包与加载

一.写在前面  通过AssetBundle进行资源管理很方便.对AssetBundle打包时,可以自由决定打包的粒度.将所有单个资源打包成单个bundle自然简单方便,但是却会造成bundle数目过多.本文介绍的是一种依赖关系打包的策略.希望能最大限度的减少bundle数量又不加载冗余资源.  若对AssetBundle没有了解,可以先阅读:Unity动态加载和内存管理(三合一...

2017-09-22 12:45:00 376

转载 [小明学Shader]光栅化渲染器

一.写在前面  在学习图形学的过程中,在知乎上看到了几个前辈实现的渲染器,在参照《3D游戏编程大师技巧》以及几位前辈的代码下,用c#实现了一个版本的软件渲染器.  实现代码量并不大,但事实上"不要被这微小的代码量所迷惑,量少就意味每一行代码每一个函数都潜藏着巨大的知识量",本博客意在梳理实现过程中所涉及到的知识点.  若只对前辈们的实现感兴趣,我在本文的最后放了其它实现的gi...

2017-09-05 17:29:00 191

转载 [小明学算法]8.二叉平衡树

参考:http://www.cppblog.com/cxiaojia/archive/2014/03/02/187776.html 1 #include<iostream> 2 using namespace std; 3 4 template<class T> 5 class BTreeNode 6 { 7 p...

2016-01-15 12:00:00 99

转载 [小明学算法]7.字符串匹配算法---BM

1.简介  BM算法是比较优秀的字符串匹配算法.2.主要思想介绍  BM算法主要有三个要点     ①.从pattern的后面往前比较     ②.对匹配过的数据应用KMP     ③.将pattern向右滑,找到与string当前字符匹配的a相同的字符位置(若不存在,直接滑过sizeof(length))     (第三步目前只实现了滑过在右侧以匹配过字符不存在的情况)...

2016-01-14 16:04:00 108

转载 [小明学Shader]14.热扭曲效果

1.代码Shader "AAAA/HeatIsland" {Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _OffsetTex ("Shui (RGB)", 2D) = "white" {} _ClipTex ("Clip (RGB)", 2D) = "white" {} _...

2016-01-13 22:56:00 139

转载 [小明学算法]6.字符串匹配算法---KMP

1.简介   字符串匹配就是看看那字符串b是不是字符串a的子串.常用的Knuth-Morris-Pratt 算法,又称KMP算法.2.主要思想  当patter在某一位置与string匹配失败时,我们除了知道从string的这个位置进行匹配失败这个结果外,是否可以从前面的匹配中获得更多的信息呢。即当前匹配点匹配失败之后,向右滑动的距离是可以提前计算出来的....

2016-01-10 23:43:00 276

转载 [小明学算法]5.常用排序算法

一.选择排序  选择排序是比较容易理解的排序方法,从未排序的数组中,选择一个最大的元素,放到队首,循环操作,就是选择排序.  操作步骤:    1.设i=0    2.找到数组a[i...length-1]中最大的,记录数组下标值    3.将数组的a[i]与最大值交换位置,则a[0...i]是从大到小的排序序列    4.i<length,i=i+1,重复...

2015-12-31 19:02:00 436

转载 [小明爬坑系列]AssetBundle实战

一.创建assetbundle文件 将asset数据进行AssetBundle的代码如下: 1 using UnityEngine; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.IO; 5 using UnityEditor; 6 7...

2015-12-30 17:31:00 85

转载 c#多线程同步

1.c#的多线程用ManualResetEvent可以同步2.c#的多线程用Abrot会触发线程内的Abrot异常,但并不一定会结束多线程,调用Abrot之后,线程处于AbrotRequest状态.转载于:https://www.cnblogs.com/WongSiuming/p/5088788.html...

2015-12-30 14:44:00 64

转载 [小明爬坑系列]AssetBundle原理介绍

一.简介  Assetbundle 是Unity Pro提供提供的功能,它可以把多个游戏对象或者资源二进制文件封装到Assetbundle中,提供了封装与解包的方法使用起来很便利。二.移动平台特点  Assetbundle是可以把预制,文件以及场景都打包到Assetbundle中去的,但是在移动平台上,有诸多限制.  首先,移动平台上虽然能打包场景,但是因为移动平台是不更...

2015-12-28 15:14:00 92

转载 Ai角色自主决策----有限状态机

1.简介  有限状态机由一组状态,输入和根据输入以及现有状态转换为下一个状态的转换函数组巡航.2.结构  状态机FSM中包含一系列继承自abstract类FSMStateBase的对象,在FixedUpdate中循环调用Reason来监控状态改变,调用Act函数来执行当前状态的行为.  在创建State对象时,通过AddTransition对将转换条件与结果相对应,然后在...

2015-12-23 12:34:00 149

转载 [小明学Shader]13.闪光效果

1.效果更改设定的偏移值可以达到光束动起来的效果.2.原理首先,将当前uv通过与左乘矩阵绕原点顺时针旋转30度,然后再乘以二,将当前像素点的亮度乘以lerp(1,0,uv.y)(即(1 –f)*a+b*f,旋转过后,处于x轴上的点所得到亮度最大,将得到的值转化为0-1内的变量,乘以当前uv对应的图片上的rgb即可.除此之外,通过对当前uv乘以2可以让一半...

2015-12-17 22:41:00 135

转载 [小明学Shader]12.技能冷却

1.效果2.原理uv所对应的atan2(x,y)表示反正切(x/y)的值,在区间[-π,π]中.我们设定图片中心为原点,则所有的点所对应的角度都是可以通过反正切计算出来的.通过与设定的_Angle值比较,大于部分不变化,乘以的是1,另外一部分乘以0.3*0.5+0.5,达到变暗的目的.3.代码 1 Shader "Custom/Mask" { 2 Pr...

2015-12-17 16:34:00 109

转载 [小明学Shader]11.圆角

原文连接:http://blog.csdn.net/mobanchengshuang/article/details/387310351.代码 1 Shader"Custom/圆角"{ 2 properties{ 3 _MainTex("Base(RGB)",2D)="white"{} 4 _Value("Cut Value...

2015-12-17 14:44:00 56

转载 [小明学Shader]10.百叶窗

1.代码 1 Shader "Custom/百叶窗" { 2 Properties { 3 [PerRendererData]_MainTex ("Base (RGB)", 2D) = "white" {} 4 _Count("Count",float)=1 5 _Range("Range",Range(0,...

2015-12-15 17:52:00 95

转载 [小明学shader高级篇----后期效果]1.Graphics的两个方法

一,介绍  Render to Texture即渲染到纹理的特性,是一种高级操作,利用这种特性,我们可以实现各种各样难以在普通渲染过程中实现的华丽效果。  想要做屏幕的后期效果,就必须使用Graphics的Blit和BlitMultiTap方法.和相机的Render,RenderWithShader方法的不同之处在于,Graphics的这两个方法都是在屏幕上又做了一个和屏幕大小一...

2015-12-15 11:36:00 151

转载 [小明学shader进阶篇----描边]1.二维描边

1.效果2.原理  通过检测alpha的变化梯度可以确定边缘.也可以通过周围alpha的值来扩大显示范围,先画出一个背景来.3.代码  Shader "Custom/Outline2D" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Color("...

2015-12-15 10:38:00 109

转载 [小明学算法]4.Dijkstra(迪杰斯特拉)算法

1.定义概念  Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。值得注意的是,该算法要求图中不存在负权边.2.基本思想  设置顶点集合S,初始时,S中仅含有起始点,把从起始点到u且中间只经过S中顶点的路称为从起始点到u的特殊路径,并用数组dist记录当前每个顶点所对...

2015-12-14 16:45:00 134

转载 [小明学算法]3.启发式搜索算法----A*算法之我见

1.算法介绍a*算法是一种寻路算法,类似于图的广度优先遍历搜索.2.基本概念设计先两个集合CloseList和OpenList,CloseList表示已经走过的节点,OpenList中的节点表示所有我们可以选择的下一步节点.3.计算步骤:1.将起点设为当前节点,并创建OpenList和CloseList.2.将当前节点从OpenList中删除,并加入到CloseL...

2015-12-14 11:29:00 190

转载 [小明学算法]1.动态规划--最长递增子序列问题

一.概念介绍  动态规划(DynamicProgramming),简称DP.是把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法.二.特点   动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度,因此它比回溯法、暴力法等要快许多。  在...

2015-12-14 11:21:00 167

转载 [小明学算法]2.贪心算法----

待填转载于:https://www.cnblogs.com/WongSiuming/p/5044635.html

2015-12-14 11:21:00 196

转载 [Unity的序列化]2.技能编辑器的实现

哎呀 不太想写啊...转载于:https://www.cnblogs.com/WongSiuming/p/5039435.html

2015-12-11 16:19:00 221

转载 [Unity的序列化]1.什么是序列化

一.写在前面本系列将通过一个任务系统模块的实现,来窥视一下Unity自带的序列化究竟是什么.将包含以下内容1.技能系统的需求分析2.技能系统的结构设计3.技能系统的实现4.技能系统的效果转载于:https://www.cnblogs.com/WongSiuming/p/5012891.html...

2015-12-02 14:18:00 343

转载 [小明学Shader]9.顶点方法(Vertex Function)和顶点色

  渲染过程中,Shader总是优先对每个顶点进行计算(这里如果我们用顶点方法,那么我们的顶点方法就会被调用);顶点计算出后按照一定的格式输出给下面的流程,其中的某一步就是我们放置的surfa方法,它接收的输入可以进行一定的控制(我们将用顶点方法输出).  整个 shader 相关流程如下:  1、 shader 准备对一个顶点进行计算。因我们自定义顶点方法,因此 vert 被调⽤ ...

2015-11-30 16:22:00 312

转载 [小明学Shader]9.Alpha测试(alpha test)

Alphatest使用方法:#pragma surface surf Lambert alphatest:_value注意关键字是:alphatest作用:将低于这个值的Alpha全部丢掉,就当没有,所以就出现了低于_value的像素点不再处理的情况.(但是高于目标值的点也不会有透明效果)代码:Shader "Cutstom/1...

2015-11-27 17:01:00 114

转载 [小明学Shader]8.透明,Alpha混合(alpah blend)

  透明在渲染的时候经常用,类似玻璃啊,头发啊,树叶啊之类的,必须要用到.代码Shader "Cutom/11.27/3"{ Properties{ _MainTex("Base(RGB)",2D)="white"{} } SubShader{ Tags{"Queue"="Transpare...

2015-11-27 15:52:00 154

转载 [小明学Shader]7.环境映射和Cubemap

对于金属状、玻璃状物体,它们的表面能映射出周围环境。如果碰上这类的物体,用上我们本篇的 shader,就能让这种物体显得更加的逼真。制作Cubemap写Shader之前呢,要用到一个Cubemap,可以用Unity的编辑器生成.代码如下:using UnityEngine;using UnityEditor;using System.Collections...

2015-11-26 13:08:00 188

转载 [小明学Shader]6.自定义光照----高光效果

就我目前所知道的,在光照这吧,主要有三种算法,第一种漫反射的Lambert已经介绍过了,接下来还有BlinnPhong和Phong,都是用来做高光的.那么我们先来看第一种,先看代码BlinnPhong光照模型 inline float4 LightingSpecular(SurfaceOutput s,fixed3 lightDir,half3 viewDi...

2015-11-26 13:06:00 113

转载 [小明学Shader]5.法线贴图

法线贴图据说很常用,可以用来表现物体的凹凸感.使用时,需要有一张原图和用来记录法线的法线贴图.贴图:法线贴图:效果对比(右边加了法线):代码Shader "Custom/11.26/3" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Nor...

2015-11-26 13:05:00 75

转载 [小明学Shader]4.自定义光照----RampTexture

上一篇讲了自定义光照的HalfLambert,这一次和它有些类似,但是计算的时候,不再用方向和atten相乘了.将光入射方向与法相的点乘积HalfLam作为坐标,找到RampTexture中(HalfLam,HalfLam)点的rgb值作为混合值与s.的Albedo和入射光颜色相乘.代码如下:Shader"Custom/11.26/2"{Properties{ ...

2015-11-26 13:04:00 119

转载 [小明学Shader]3.自定义光照,半拉姆伯特

一.Lambert在SubShader中的CG片段里,需要指定光照函数,一般为Lambert,即默认的拉姆伯特#pragma surface surf LambertLambert的函数是默认的,代码同下:inline float4 LightingBaseDiffuse(SurfaceOutput s,fixed3 LightDir,fixed at...

2015-11-26 13:03:00 57

转载 [小明学Shader]2.理解Shader和Material的关系

每一个Material都要选择一个使用的Shader.每一个Material都会存储自己的值我们新建一个混色的Shader,再分别创建四个Material,其效果如下:Shader代码如下:Shader"Custom/11.25/2"{ Properties{ _Value("Cofficient",Range(0,10))=2.5 ...

2015-11-26 13:02:00 186

转载 [小明学Shader]1.Diffuse

写在前面本系列随笔是看化石大大的Unity Shader编程做的图书笔记,原课程地址:Unity Shader编程Shader简介Shader直译的话意思是"着色器",是在可编程的渲染管线中对渲染过程进行控制的,具体怎样作用我们以后再说,现在我们先关注在Unity中用ShaderLab怎样实现一些常用的Shader功能.DiffuseDiffu...

2015-11-26 11:48:00 104

转载 [UGUI]你说UnityEngine.UI.Button是怎么通过拖动来增加OnClick的监听器的呢?

一.写在前面按国际惯例,先来讲一讲怎么涉及到这里了.我希望一个UI模块在Awake场景加载之后就可以通过回调来响应服务器消息,但是因为这个模块在场景加载的时候并不会被激活,所以需要将事件的订阅提前到该模块被加载之前,这就让我想起来了UGUI的Button的onClick事件,既然如此那就让我们一起来发现真相把.二.真相就在这里!首先呢,UGUI是开源的,要看源码啊,就不得不推...

2015-11-23 16:16:00 115

转载 [小明也得懂架构]1.架构初探

一.写在前面  从很久很久以前就听说一个好的程序员是可以简单的写写构架然后就可以坐着喝茶看别的码农加班加点儿通宵瞎忙了,小明对能成为这种级别的程序员是相当的向往啊!有道是不积跬步无以至千里,想做架构师也得按照基本法不是,所以先从了解架构是什么开始吧.二.前辈大牛写的  牛顿这种"神棍"都得站在巨人的肩膀上呢是吧,那么小明也得先看看前辈们怎么说啊.网上找了下,发现阮一峰大牛前辈...

2015-11-23 15:48:00 87

转载 [小明带你玩儿Photon]5.服务器与客户端架构

一.写在前面通过前面的几篇,我们已经大概了解了Photon客户端与服务端的通信并对日志进行了介绍.结合和本系列一起更新的FluentNHibernate初探系列即可以进行一般性的游戏开发了.二.客户端和服务端的通用部分我们建立一个类库项目,将服务端和客户端需要进行通讯的数据类型存储在这里,包括操作代码(OperationCode),参数的增加和提取(ParameterTool...

2015-11-20 16:57:00 116

转载 FluentNHibernate使用注意[1]

在通过FluentNhibernate中读取出来的对象涉及到引用时,若用litJson的JsonMapper转化为Json时,会出现异常,不知道为啥会发生,我的处理方法是将引用置为空,再将其转化为了json转载于:https://www.cnblogs.com/WongSiuming/p/4976704.html...

2015-11-19 10:03:00 81

转载 FluentNHibernate初探[2]

一.写在前面上一节已经将如何把FluentNHibernate引入到工程中讲过了,这一节我们来看一看如何通过FluentNHibernate来连接到数据库.二.创建NHibernateHelper类需要连接到数据库的配置将会被封装在这个类中.在配置过程中将会应用到lambda表达式.本篇将根据Fluent-nhibernate的官方文档,对连接到数据库的配置进行讲解...

2015-11-12 14:35:00 112

转载 [LitJson]小明来解析Json

一.写在前面在客户端与服务端需要进行交互的时候,需要通过一种协议来进行数据交互.json就经常被用来进行完成这种功能.二.JSON简介JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。JSON采用完...

2015-11-12 11:05:00 148

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除