最近发现一个逗比知识,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 →

上周业余时间除了搞了搞KlayGE之外,还尝试用Unity山寨UE4的PBR,在对比的时候发现两个引擎各种细节还是差距挺大的。同样是材质的预览窗口,UE4自带了HDR、Tone Mapping和环境贴图:下图左边是UE4材质编辑器的预览,可以看到有比较清晰的天空反射;右边是山寨货在Unity里的效果(参数还得再调,边缘fresnel有点过强了,可能是后处理带来的)。

lightprobe_compare

Read More →
KlayGE移植到OSX的尝试

之前一直有准备在研三的业余时间深入学习一套引擎,备选如下:

  • cocos2d-x: 不小心直接把代码过完了_(:з」∠)_,确实比较简单,话说3.x版本比2.x的设计好多了,用了不少c++11的新特性真是赞;
  • unity: 能看到的也就是自带的脚本和内置shader,读完觉得也就这样,而且有些黑盒的东西真是坑的我一脸,最近还遇到了俩bug,这方面的一些知识体会准备过几天整理一下;
  • Unreal4: 读完了所有shader、大部分材质和部分渲染,但是整个引擎太庞大有点搞不动;
  • KlayGE: 纯代码量来说不多不少正好,而且更加侧重渲染,同时兼顾了OpenGL、DirectX,以及那个glloader的思路真不错。

最终选定龚大的KlayGE作为学习的样本,而且还可以参与进去边做边学。前段时间在业余花了不少功夫将KlayGE移植到OSX,记录一下学习到不少东西以及踩的坑。

Read More →