Unity中矩阵变换、深度纹理及杂项

在移植UE4的Temporal AA到Unity过程中,计算Camera Motion、Jitter等遇到了若干坑,记录一下。

ps. 这些问题其实主要是……文档不全造成的

Read More →

昨儿吹酱在群里发了一个WebGL 雪地的例子,里面雪地的交互挺有意思。还好它的源代码只是压缩了一下,没有加密;大概扒拉着看了一下,它其实就是不断利用createRadialGradient绘制Bump Map来实现的。然后比较有意思的是它在代码的注释里提到了一篇文章Bump Mapping Unparametrized Surfaces on the GPU,看了下挺好玩,于是我搞到Unity里面去了~

unity3d_bump1

Read More →

最近发现一个逗比知识,osx下设置垂直同步貌似靠代码是无效的

GLint swapInt = 1;
[[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
Read More →

主要参考了KlayGE里的SSSSS实现,在Unity里山寨了一下:

SSSSS打开 SSSSS关闭
unity_sssss_on unity_sssss_off
Read More →
cocos2d-x安卓视频OpenGL错误

这个其实是我很早之前遇到的一个问题,见 Cannot resume from video play 然后今儿有人发邮件来问当时是怎么解决的-.-

Read More →
KlayGE移植iOS进行中...

这个帖子估计持续更新时间会很长…记录移植KlayGE到iOS中的坑ing~不少坑之前在移植OSX的时候已经踩过了,这里就不再赘述。

Read More →

Profiler是3D引擎中一个非常重要的工具~之前为了测试Unity在手机上的性能,做了一系列测试,然后发现了一个有点奇怪的现象:同样是若干旋转模型+一个光源,在Nexus 5运行到30fps时,有俩Test Case面片数相差的非常多~(都故意没开Dynamic/Static Batch DrawCall)。

Test Case 1: Test Case 2:
unity_profiler_test1 unity_profiler_test2
Read More →

这个和我之前在贵易实习的内容相关,当时是参考了SIGGRAPH 2013 Course里的材料,主要是UE4和COD9两节;以及KlayGE博客上的系列介绍游戏中基于物理的环境光渲染

话说虽然Unity 5已经提供了PBR,而且还有Skyshop这种插件(见unity3d 基于物理渲染的问题解决);出于练手,我还是参考UE4在Unity 4.6里山寨了一发。做的时候需要打开线性空间、HDR和Tone Mapping,才能看得出效果~另外UE4里的ambient cubemap是用的hdr格式,而我在Unity里是转换到dds cubemap了,所以表现力下降了不少。

粗糙度不变,金属度增大: PBR_metallic

Read More →

之前桌子跟我讲了一个很冷的小知识:对于3D美术来说,做贴图的时候如果想要做50%灰,应该用186/255而不是127/255。这个很有意思,稍微想了下应该是和Gamma校正有关,然后算了下确实是这样的。后来我分别在Unreal里和Unity里试了下,谨以此文记录。

名词解释

具体Gamma Correction(伽马校正/Gamma校正)相关内容可以参看klayge上的gamma的传说一文。如果把颜色亮度理解为能量的话,输入和输出中是非线性的对应关系,对应下图中的红线;但是计算的时候必须使用线性对应才对,对应绿线:

gamma_lines

Read More →
通过Wine在OSX平台上使用d3dcompile

这个其实是源自KlayGE移植OSX上的一个需求:在OSX上希望使用d3dcompile,配合DXBC2GLSL来生成OpenGL Shader。之前移植的时候是使用的NVidia Cg凑合,但是Cg Profile在OpenGL 3.x开始不支持Multi-vendor,而且也发现对于tex2DLOD之类的函数支持的有问题。

Read More →