Luffy Blog

一生想做浪漫极客

HSV与RGB颜色转换

通过hsv调整饱和度

前言 通过shader,将color的rgb转换为hsv空间,调整图片。 原理及实现 wiki关于HSV及RGB的解释 HSV,即色相(H,颜色),饱和度(S纯度),亮度(V/L)。 使用圆锥或圆筒表示,转换公式wiki中附带。 优化及代码 往上有一些针对GPU命令优化转换的版本: 1.HSV shader算法优化 2.Uniy 开源HSV转换 针对特定算法,基于GPU指令...

HSV与RGB颜色转换

通过hsv调整饱和度

前言 通过shader,将color的rgb转换为hsv空间,调整图片。 原理及实现 wiki关于HSV及RGB的解释 HSV,即色相(H,颜色),饱和度(S纯度),亮度(V/L)。 使用圆锥或圆筒表示,转换公式wiki中附带。 优化及代码 往上有一些针对GPU命令优化转换的版本: 1.HSV shader算法优化 2.Uniy 开源HSV转换 针对特定算法,基于GPU指令...

Planar Shadow实现及应用

阴影的不同实现及优化

前言 阴影的实现有许多方式,由自带的Shadow Map 方式,转到使用Projector 方式, 最后参考自镇魔曲, 使用Planar Shadow方式来实现。对比分析不同实现方式。 自带阴影 最开始使用的是自带阴影,当时考虑的原因是自带shadow方便控制光的方向和统一表现,例如:水、物体、人物等需要光的方向、亮度等,都会有统一的方向。 实现 使用Unity自带阴影在实现上是很简单...

后处理杂谈

后处理的相关实现及相关细节

前言 随便说说后处理相关,游戏中只需要Bloom,在选人和外观界面是需要DOF效果,有许多插件,U3D官方同样有相关研究如: Post-processing Stack。 思路 以Post-processing Stack为基础,github地址,考虑到需要的效果并不是很多,选择第二个版本,第一个Post-processing版本将所有效果合到一起,并无必要。 效果实现其事就不必讲了...

人物渲染

渲染人物的Shader及整合

前言 风格统一的,且有特色的人物渲染会为游戏增色不少,包含了对渲染的公式计算,也包括了如何将各类shader整合以方便美术使用。 考量及实现 主要以两方面为基础: Toony Colors Pro 插件 : 插件地址 Unity Chan 官方例子,实现根据皮肤颜色确定描边颜色 : 开源地址 以Toony Colors为基础,实现角色渲染。 但具体实现会有些不同,缘由是所...

Custom Water Shader

项目中水面Shader编写及演变过程

前言 不同游戏实现渲染水的方式也不同,卡通的、真实的、低模的等等。但基础原理是差不多的,不同的效果:UV移动、高光、真实反射、边缘模糊等,如组合一样,需要什么加什么。 实现及思路 童话风格游戏不求水的表现十分真实,求的是一些比较好的效果。 实现的功能有:透明、描边(随水深变化)、高光反射(PBR,传统高光不聚,不好看)等。 参考基础:Stylize...

Unity贴花系统研究及应用

对不同贴花实现的研究与分析

前言 在游戏世界中有贴花有许多应用场景。 最近特效遇到个BUG: 释放的技能在非平地时,会遇到显示不全的问题。 在查看目前手游的相关解决方案时查看, 一般手游中,会尽量使用平的地面来避免, 另一种既是使用_贴花_。 贴花有不同的实现方式: 计算网格、projector投影。 下面就分别介绍相关的知识及应用。 Projector 基础知识 参考网址Opengl在u3d中实现Proj...

U3D中多线程研究应用(二)

多线程在U3D中的应用

前言 上篇 介绍了c#多线程的相关基础知识,本篇结合U3D介绍相关实际应用。 上文提及到在U3D中使用多线程编程面临两个问题: .net版本低,无法使用TPL以及async/await 继承MonoBehaviour相关操作只能在主线程执行 依据Easy Threading(收费) 和 Thread Ninja(免费)两个插件进行分析与深入了解。 Task在U3D的实现...

U3D中多线程研究应用(一)

多线程知识基础

在游戏当中有许多需要用到多线程。与此同时,Coroutine在U3D中并非多线程,不能够使用try-catch,且没有返回值。 所以,花了一些时间研究了一下多线程(C#)的相关知识点以及U3D的整合实现。 第一篇先介绍一下多线程的相关信息。 基础知识 首先,关于多线程有许多基础知识,可以通过翻阅MSDN文档或者在SOF中寻找他人的观点。 例如: Thread 是什么? 参考SOF相...

设计模式学习方法总结

利用多种资源和方式学习设计模式

最近在间歇时间一直在看设计模式的相关知识,了解设计模式的好处有许多,如:对代码的结构有更加清晰的认识,以经典的MVC为例: Model层采用监听者模式来通知观察者数据有所改变。 Controller采取策略模式,视图可以调用不同controller以实现不同目的。 View采取组合模式,将改变传递到最上层,则改变依次迭代到叶结点(包含迭代模式) 除此之外,在交流学习的过程...