unity改变图片像素大小_类动森像素画反向转换 (xBR)

3bcf2bb7d70b5746ee532d2d4d8f0696.png

起因

前阵子沉迷动森,DIY 样式的画风真的超萌(゚д゚)ノ,恰巧在推上看到有个小姐姐在讨论这个像素画转换的算法,就想在 Unity 里整整。

最后实现的镜头特效效果如下图。

200b48030d5c878ff83e01107bd9942f.gif

像素缩放算法

常见的像素缩放算法对比图如下,摘自维基:

f3fb8a084b03df22852c5883e732b7a8.png

可以看到动森的 DIY pattern 的像素转换效果和 xBR 系 (xBR4x)最相似。

相关原理就不赘述了,作者大大有教程,感兴趣可以看看(不好意思我只是个么得求知欲的搬运工。

cg 源代码在 github 上都有公开。这里我选择了 xBR4x 进行搬运工作。

注意事项

  1. cg 文件转 shaderlab 文件只需要在 unity 着色器文件模板里复制粘贴加上 cg 代码即可,几乎无改动,但是需要手动加上 properties 等 shaderlab 文件必需内容。

  2. 注意 cg 文件中用到的包含文件也需要添加到 unity 项目中。

  3. 要取得最佳效果,所有图片的 Filter Mode 需设置成 Point。

  4. 分辨率会受 camera 距离图片距离、场景大小、像素画大小影响,需要根据实际情况调试。

  5. 暂只支持 camera 后期渲染,不支持直接添加材质到 Gameobject,描边有扩大化的问题。

ffe375ffc107c8ec641ad439156a0dde.png

工程文件

llapuras / XbrShader

https://github.com/llapuras/XbrShader

参考

  1. pixel art scaling comparison· 内有大图,可预览几种常用像素转换算法的具体效果

    https://www.unindented.org/blog/pixel-art-scaling-comparison-part-2/

  2. 相当齐全的 cg shader repo· 理论上这里的 shader 都能搬进 unity 里用

    https://github.com/libretro/common-shaders

  3. 某试图将 xbr 的 cg 转 unity 的前人的帖子· 帮了大忙!

    https://forum.unity.com/threads/how-to-copy-paste-a-cg-shader-found-on-the-internet-in-unity.334772/#post-2181555

  4. image resizer· 一个图片转换工具,转换算法相当齐全,就是版本太老,有报错但是勉强能用

    https://code.google.com/archive/p/2dimagefilter/downloads

3bcf2bb7d70b5746ee532d2d4d8f0696.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

99 网络编程_传统网络工程师如何利用python实现公司内网IP地址信息查询?

网工圈网络工程师阿龙圈内最早的公益公众号,本号已认证!学网络关注我一个就够了(关注近5w)关注听说99%的网工都来这里充电吖关注我,一个老HCIE(编号3558)带你轻松玩网络技术! 交个朋友,一起和一个技术狂热者相互交流,共…

[原创]windows server 2012 AD架构试验系列 – 12 配置操作主机

[原创]windows server 2012 AD架构试验系列 – 12 配置操作主机ActiveDirectory支持域中所有域控制器之间的目录数据存储的多主机复制,因此域中的所有域控制器实质上都是对等的。ActiveDirectory支持域中所有域控制器之间的目录数据存储的多主机复制,因此…

笔记本换内存条

步骤一 拆除护盖 笔记本内存插槽上都有护盖保护,首先第一步就是先将护盖拆掉。大多数笔记本的护盖上都有标识,有的是内凹的内存图形,而且从护盖的大小也能看出来,一般内存护盖的大小,就比内存条大一点。当然有不少笔记…

angularJS 指令实践

AngularJS 指令(Directives)实践指南(1) 2014-03-12 10:22 陈鑫伟 编译 伯乐在线我要评论(0)字号:T|T一个指令用来引入新的HTML语法。指令是DOM元素上的标记,使元素拥有特定的行为。举例来说,静态的HTML不知道如何来创…

数据结构四双向链表

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。而之前的单链表为单向链表&#xf…

Linux服务器的初步配置流程

开发网站的时候,常常需要自己配置Linux服务器。 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情。这主要是我自己的总结和备忘,如果有遗漏,欢迎大家补充。 下面的操作针对Debian/Ubuntu系统…

不要学习代码,要学会思考(转)

英文原文:Dont learn to code, learn to think 译/赖信涛 这是一个人人都在学习编程的时代:Code.org请了比尔盖茨,马克扎克伯格和克里斯波什等这些名人,来告诉你,每个人都可以编程;CoderDojo’s在各个国家悄…

Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)

声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究。 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好&#xff0…

旋转函数_【视频课】:一次函数拓展应用(图象的平移、旋转、轴对称及5种解题方法)...

请点击上方“出彩数学”可以免费订阅哦停课不停学★ 特别关注:今日头条、西瓜视频——初三中考解题方法与技巧、初一、初二的同步讲解视频,正在陆续上传,请关注今天头条或西瓜视频(下载APP,搜索“出彩数学”,关注即可…

c语言中,关于延迟函数的理解

对于延迟&#xff0c;有些c基础的人都能够做到用for或while来实现 例如&#xff1a; #include <stdio.h>int main() {int i, j, k;for (i 1; i < 1000; i){for (j 1; j < 1000; j){for (k 1; k < 1000; k){}}}printf("hello\n");return 0; }1234…

火山去水印链接_在线批量去水印下载快手图集视频、抖音、火山等平台方法技巧!...

不管是做自媒体还是做电商或是工作素材采集&#xff0c;都离不开视频&#xff0c;视频比文字更好展示出产品、细节内容&#xff0c;就好比我们经常看的抖音、快手、火山、皮皮虾之类的短视频里面就有很多优秀的素材&#xff0c;相信有采集过的朋友都会遇到平台水印这个问题吧&a…

php CI 实战教程:如何去掉index.php目录

Windows下自由创建.htaccess文件的N种方法.htaccess是apache的访问控制文件&#xff0c;apache中httpd.conf的选项配合此文件&#xff0c;完美实现了目录、站点的访问控制&#xff0c;当然最多的还是rewrite功能&#xff0c;即URL重写&#xff0c;PHP中实现伪静态的一个重要途径…

十字连接焊盘_你应该知道的焊盘基础知识

PADSTACK&#xff1a;就是一组PAD的总称。Copper pad&#xff1a;在布线层(routing layer),注意不是内层&#xff0c;任何孔都会带有一个尺寸大于钻孔的铜盘(copper pad)。对内布线层这个铜盘大概14 mils&#xff0c;外布线层更大。如果这里需要导线连接,那么这个可以提供一个可…

平面上最近点对

在二维平面上的n个点中&#xff0c;如何快速的找出最近的一对点&#xff0c;就是最近点对问题。 一种简单的想法是暴力枚举每两个点&#xff0c;记录最小距离&#xff0c;显然&#xff0c;时间复杂度为O(n^2)。 在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实&#xff0c…

Shell脚本中循环语句for,while,until用法

循环语句:BashShell中主要提供了三种循环方式&#xff1a;for、while和until。一、for循环for循环的运作方式&#xff0c;是讲串行的元素意义取出&#xff0c;依序放入指定的变量中&#xff0c;然后重复执行含括的命令区域&#xff08;在do和done 之间&#xff09;&#xff0c;…

git管理账户忘记了_强制找回GitLab管理员账户密码的方法

01. 概述如果gitlab的密码忘记了&#xff0c;由于没有邮箱服务支持&#xff0c;所以可以通过后台直接操作git-shell&#xff0c;先找回管理员的密码。操作步骤如下02. 环境使用docker部署的gitlab&#xff0c;因此需要多执行一步&#xff0c;如果是传统安装方法&#xff0c;不用…

交换2个数值的方法

如何交换2个变量的值&#xff1f;一般来说&#xff0c;想到的方法是再找一个临时变量&#xff0c;通过一种顺序存放的方式来达到交换值的效果。 比如有a,b这2个变量。取同类型的变量temp。 temp a ; a b ; b temp ; 这样就完成了交换。但这样做的话会多使用一个temp的内存。…

【问题收集·知识储备】Xcode只能选择My Mac,不能选择模拟器如何解决?

网友问题:请问打开一个应用&#xff0c;只能选择My Mac&#xff0c;不能选择模拟器如何解决&#xff1f; 答案: 下面将问答过程记录如下&#xff1a; CHENYILONG Blog请问打开一个应用&#xff0c;只能选择My Mac&#xff0c;不能选择模拟器如何解决&#xff1f; 网友的问题 09…

CSS垂直居中总结

原文:CSS垂直居中总结工作中遇到垂直居中问题&#xff0c;特此总结了一下几种方式与大家分享。本文讨论的垂直居中仅支持IE8 1、使用绝对定位垂直居中 <div class"container"><!--<div class"floater"></div>--><div class&quo…

单元测试代码:SpringTest+JUnit

2019独角兽企业重金招聘Python工程师标准>>> /*** JUnit单元测试父类&#xff0c;配置了Spring的基础环境。 <br/>* 可以作为Controller、Service、Dao单元测试的父类。* * author leiwenfansunion.cn*/ public class JUnitTestBase {public static XmlWebApp…