Unity中如何向Shader传数组

项目开发笔记(十三)

最近使用Shader的时候需要给Shader传递参数,后面发现参数过多(30+个颜色值和10+个纹理),Shader在PC上运行得好好的,但是到某些移动设备上就尿崩,突然发现:

  1. 为什么shader无法往其传递数组呢?
  2. 为什么使用了多个纹理后(例如三星T560),在设备上无法运行正常?

Unity允许通过Material往Shader里传递int,Texture,Color, Vector4等参数,而且不同的移动设备可能支持不同的 Shader Model(SM 1 2 3 4 5),不同的SM版本会限制纹理指令和算术指令的数量使用。参考:High-Level_Shading_Languag。经过测试设备三星T560只能传入8个纹理指令,再增加就会工作不正常。我们不能改变设备显卡对SM的支持,只能通过减少纹理指令和算术指令的方式来兼容它。顺带把如何传入数组的问题也解决了。那怎么做呢?

继续阅读“Unity中如何向Shader传数组”

Unity中实现纹理色块替换

项目开发笔记(十二)

哈,又一年了。在小时候过年总是非常有感觉,也满心期待。长大一点到了17 18岁的阶段,慢慢感觉过年失去味道 慢慢变成形式化,觉得过年传统做的节目都太无聊。又长大一点 到了25 26岁,过着常年背井离乡的生活 反而小时候对过年的期待又回来了,这几年我甚至非常热忱的参与到 杀猪 贴门神 拜天地等活动中…说回正题,我最近遇到一个需求.

一个小需求

对纹理中的指定色块,使用另一个纹理替换,如下图,这个图我们叫它原纹理

继续阅读“Unity中实现纹理色块替换”

构建工具一体化的实现

项目开发笔记(十一)

终于又可以继续我的项目开发笔记了,经过大半年的沉淀,我分别捣鼓了很多东西,大多数都应该整理笔记记录下来。构建工具一体化的实现我打算形成一个系列,把我的思路和部分实现记录一下。这里主要是针对Unity项目,在我实现整个流程之后 发现针对其他任何项目应该也类似,不管是需每次编译整个源码的cocos项目 还是AS项目Android原生项目。

相关涉猎

运行环境

Win10,OSX,Web

技术栈

SVN(or Git),应用在项目版本和源码管理

BAT批处理,SHELL脚本,应用在本地编译和打包

Jenkins,应用在控制远程执行打包,控制构建前后事件和任务

具体项目本身的适应,我准备拿Unity项目作为例子,这里如何把Unity的打包流程一键化是keypoint

继续阅读“构建工具一体化的实现”

有时候你不需要搜索代码

编程感悟

最近一段时间团队里新加入了一些小伙伴,我一直希望大家在参与具体项目功能开发之前,先好好熟悉框架熟悉代码熟悉流程,在开始某个模块开发之前,先好好熟悉产品文档,先构思一翻。奈何有的同学似乎还是按照他原本的工作套路做事,无奈。

今天主要说说代码里的搜索功能(主要是指微软的IDE神奇VS里的代码搜索功能)

Visual Studio里的代码搜索功能非常丰富,常用的有:

0x00. Ctrl+F 主要是当前源代码文件里的搜索或者替换
0x01. Ctrl+Shift+F 主要是当前项目或者当前解决方案全局的搜索或者替换
0x02. Ctrl+;(冒号) 搜索解决方案资源管理器,主要是搜索当前解决方案ListBox里的源文件名字
0x03. Visual Assits 中的Shift+Alt+O 快速打开源文件,其中每输入一个字符 可根据当前字符定位最接近的源文件
0x04. Visual Assits 中的Shift+Alt+S 和 Shift+Alt+F 等
注意 Visual Assits 是一款最常用的VS插件,本人是烂番茄的深度中毒者。。近几年还购买了正版,略贵但是却物超所值的一个插件。

使用上述的几个功能,极大的提升了开发效率,而且我也几乎每天都需要使用它们。但是,针对新加入项目的同事,或者对项目组成一点不熟悉对代码基本结构毫不了解的同学我真的严重不推荐使用。

继续阅读“有时候你不需要搜索代码”

成为负一代

买房这件事

终于还是做了这一件事 — 买房.换一种很说法 — 终于成为了负一代.

这个时代,是一个大多数人都买不起房的时代,我也深知目前楼市泡沫严重,极有可能崩盘,即使如此我依旧出手的原因只有一个 – 刚需.

我老家风景秀丽,山水毫无污染,家家户户都拥有土地,山,是的每家都有山.下图就是我的家乡

虽然我的老家得天独厚,非常适合人居住,但是有一个非常严重的问题,由于人口最近十年来的迁移变化,导致家乡的人口急速减少,幼儿园小学初中等教育设施直接关门,我的小学母校初中母校现在已经不复存在,距离我家最近的小学在距离家里20KM的镇上,最近的初中在距离家里50KM的县里,最近的医院在距离家里50KM的县里.这些都是我不得不面对的问题..这些也是我下定决心买房的因素之一.

在过去的两个月(2016.09,10)的时间里,多次奔波之后,这件事情已尘埃落定.回想起整个过程,发现需要了解的事情实在太多,有必要写一篇文章记录一下.

继续阅读“成为负一代”

当我是个面试官(一)

最近代码量有所减少
一来是业余项目进入维护和交接阶段;
二来新的个人项目处在构思起步中;
三来公司项目处在平缓过度期;
四来近两月都参与公司招聘工作,负责技术基础功底面试,也就是所谓的技术一面。公司目前基本面试分为三面:HR面,技术一面,技术二面(基本就是CTO面了);
五来九月十月份私人事务繁忙,老家深圳往返多次,这两月我做了一件可能有点意义的事情,关于这件事情改天再写篇文章记录一下。

这里说说我作为面试官的经历

在我呆过的公司中几乎都参与了程序员的招聘工作,每一次都有不同的感受。

继续阅读“当我是个面试官(一)”

Unity提审AppStore踏坑指南

这是一篇把Unity做的应用提审到AppStore的踏坑指南,记录这个过程中遇到的几乎所有问题。

!!注意!! 这篇文章可能具有一定时效性,由于苹果审核策略一直在更改,所以文章中所述言论仅仅基于当前的审核制度。

首先…Show一下苹果对我提交的应用的拒绝记录(我的内心此刻布满黑人问号)

从上图的时间看,苹果的审核速度大大加快,与2013年的审核速度简直云泥之别.然而反观国内的某些平台审核..越来越慢(客观非黑)

继续阅读“Unity提审AppStore踏坑指南”

Android拍照并添加进相册

最近有个小需求,在移动设备(iOS / Android)中应用调用拍照并把所拍照片存入相册。我原本以为这是一个很简单的事情,不就拍个照然后把照片丢进相册?心想最多100行代码即可解决问题,谁知还是踩中坑。且听我一一分解。

必备权限

<uses -permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses>
<uses -permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses>
<uses -permission android:name="android.permission.CAMERA"></uses>

添加入 AndroidManifest.xml 中

执行拍照

File destDir = new File(m_ImageRootPath);
if (!destDir.exists())
{
      destDir.mkdirs();
}

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(m_ImageRootPath , m_ImageName)));
startActivityForResult(intent, 100);

代码中 m_ImageRootPath 为照片所存目录,m_ImageName为照片名。注意,若拍照不止一张 则照片名字最好每次不一样,否则你打开相册有可能每次都只能看到一张照片。

继续阅读“Android拍照并添加进相册”

变化如梭

忽然之间就到了年中,7月也在还没反应过来就已经到了最后一天。虽然才到年中,但是今年遇到的事情已经足够多了。简单记录一下。

工作

是的,和很多坚如磐石的同学朋友不一样,我的工作又变动了(上次变动是一年之前),又经历了一次 离职谈判散伙聚伙,还好这次也不需要经历那种 投简历 – 约面试 – 谈薪资 的过程。可能是由于不是第一次经历这种事情 所以丝毫没有任何的离别情绪和不舍,一年前从毕业后的第一家公司离职 满腔遗憾和愁绪还是略微大一点点,现在的这次反而落得轻松自在。目前我已经在新的公司入职半个月,从效率和任务完成度 心态 甚至代码量上看 这次的工作变动是一个好事。

这次离职也并不是那么的顺利,如果敞开说 甚至可以唠上一整天,我们这个环境下 10个公司有9个都是耍流氓的,原本以为可以轻松的拿到赔偿(N+1)走人,结果谈判了半个月才顺利结束了合同!这是这段工作中唯一的遗憾。

这次的离职后 有朋友邀请我去国外工作,这对我来说是巨大的诱惑,从金钱和发展上都是,毕竟从技术上讲 我现在应该处在一种舒适区,我内心迫切的想跳出这种舒适区,从金钱上讲,我目前的阶段已经很难找到直接double薪酬的工作了(除非天降大运),考虑半个月之后 我居然拒绝了他。目前已经在新的公司和项目组工作了半个月,由于组里基本都是熟悉的人 所以没磨合的压力。目前反而每天很乐意去上班,这与之前每天起床不想去上班简直是天地之别。我承认过去有超过半年的时间里 非常讨厌上班。现阶段的工作目标就是单纯的完成基本任务了 — 又回到这种单纯的工作状态。

继续阅读“变化如梭”

西藏生死书记忆评

这是一篇书评

西藏生死书,这本书我在两年前阅读了一遍,为何等待到今天才想起把当时的想法写下来?一来是两年之久 我还能存在于我心中的东西 才是我真正在这本巨作中得到的东西,二来因为针对书中的话题,我需要长久的去思考,实在是太沉重了。抛开书中的宗教倾向,这本书的主题是 — 生与死。这本书应该可以划分为宗教书籍(据我考察 它也确实是西藏佛学典籍),但是我认为剥开宗教信仰神论的部分 才是它的精髓所在。

从我很小的时候开始,我对死亡的好奇心就重于生

我从小就非常想知道 我死之后会发生什么(当然我还有其他很多好奇的事情),想知道宇宙浩瀚究竟是怎么回事?想知道我为何是独立的个体?我为何有“思想与想法”这种东西?我死后我的思想会不会在另一个个体里存在?想知道我眼里的红色和你眼里的红色是一个颜色么?想知道我对气味,阳光,雨露,风霜的感受是不是和每个人一样?

继续阅读“西藏生死书记忆评”