SlideShare a Scribd company logo
1 of 86
LEE JUNGPYO
Technical Director of art, Netease Pangu game studio
Art of mobile game.
Mobile PBR Look-dev for intermediate.
Essential of optimizing and tip.
Audience (听众)
Mobile game graphics artists.
Shader designer.
Art of mobile game.
Audience / Mobilegame graphicsartists.
Art of mobile game.
暂时先把Unity给忘掉吧😬
Art of mobile game.
• 适用于手游美术的Shader?
• 回顾下过去
• 我们看下14年前,在2003年开发的PC游戏画面。
• G-Force FX 5.xxx -2003年1月发售的第五代G-Force产品。
• 简单的说就是支持DirectX 9.0 和 Opengl 2.0 。
• 大致的手机画面?
• 在座的各位,14年前又是多大呢? 😄
Art of mobile game.
• 我们看下14年前,在2003年开发的PC游戏画面。
 天堂2和天堂2翼人 的画面比较。
天堂2 翼人 (2007年下半年)天堂 2 ( 2003年 10月 )
Art of mobile game.
• 我们看下14年前,在2003年开发的PC游戏画面。
 确切地说,刚好10年!!!
天堂2 翼人 (2007年下半年): PC 天堂2誓言 (2017年) : 手游
Art of mobile game.
• 表现简洁的设计和手绘风很好的案例
 龙之谷
龙之谷 (2008年) : PC
Art of mobile game.
• 提升手游美术效果的Shader
• 依旧是手绘插画的话,对此可能会没有兴趣。其实,审美的感觉比Shader是要来得重要的。
• 维尔福软件的大多数作品和独立游戏风之旅人就是极具代表性的例子。
Art of mobile game.
• 对美术风格进行以下分类
 以美术感性为中心的制作
• 与以往不同,用Shader来表现灯光效果,加强立体感的Dota2创意工坊。
 虽然是PBR,以美术感性为中心,控制细节体现等的守望先锋风格。
© 2015 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
Art of mobile game.
• 对美术风格进行以下分类
 以美术感性为中心的制作
 虽然使用了高级Shader技术,但美术表现要来得更具shading风格
• 适用于小规模的RPG游戏,或者迷你游戏
Art of mobile game.
• 对美术风格进行以下分类
 以美术感性为中心的制作
 美术感性和技术理解完美结合的案例
© 2017 Georgius
Art of mobile game.
• 2011年,仅由包括我在内的两名开发者开发的原型。Unity3D 3.0
原型开发:3D艺术家一名 + 本人
被当选为NVIDIA TEGRA 4 Global contents
2011年的当时,也称为次世代
游戏最重要的还是趣味性,比较乏味
所以,收益不好
Art of mobile game.
• 在2011年,其实,也对Shader做了诸多的的改善。
• 特别是金属质感表现,或者皮肤表现等。
Art of mobile game.
• 适用于手游美术的Shader?
• 2012年,大多数的智能手机仅支持opengl-es 2.0。
• 2014年,随着opengl-es 2.0 extention版本的登场,部分旗舰机型开始支持opengl-es
3.0。
• 2016年之后,支持opengl-es 3.0以上的机型比重急剧上涨。
• 未来,支持opengl-es 3.1以上的智能手机会成为主流登场。
• 智能手机厂商也得拿出新的卖点,也会大力开展Vulkan营销。
• 照相机像素的竞争已经走到尽头了,剩下的就是显卡性能了。
• 电池在2016年更新过一次,暂时应该不会有大的动静。(除非等苹果开发完成wifi充
电技术。)
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
• 性能层面的好处:尽管命令不少,实际从性能层面考虑,性价比还是挺高的。
 也因2005年Pixologic Zbrush中应用的材质球系统而出名。
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
https://www.clicktorelease.com/code/spherical-normal-mapping/#
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
• 性能层面的好处:尽管命令不少,实际从性能层面考虑,性价比还是挺高的。
• 始于2004年发表的Parabolic reflection。
• 优点:
• 运算快(完全代替灯光)
• 缺点:
• 灯光效果从属于视角方向。
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
• 应用案例(韩国)
• 多数2.5D游戏都有使用
• 自行修正效果使用。
跑男 (2012年) : 手游 测试Demo (2012年) : 手游
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
• 重要的是制作怎样的Matcap lit-sphere信息来使用。
 存在多种制作方法。
• 可以手工在Photoshop里面画。
 用Matcap creation工具来制作。(http://www.zbrushcentral.com/showthread.php?92157-MaCrea-Material-Creation-
Tool)
• 在Zbrush中使用Grab来确保素材。
• Perspective correction中是有问题的
Art of mobile game.
• Compare of Reflection method.
Source build for Compare through LYS from Knald tech.
Art of mobile game.
• Compare of Reflection method.
Source build for Compare through LYS from Knald tech.
Art of mobile game.
• Compare of Reflection method.
Matcap with debugging coordinate.
Art of mobile game.
• Compare of Reflection method.
Matcap Direct access reflection probe Roughness map combined
Art of mobile game.
• Compare of Reflection method.
• 非Standard shader的时候,给粗糙度贴图乘以常数2.5左右的值。
Art of mobile game.
• Matcap shader.(Parabolic view dependency shader)的扩展
 Dual paraboloid mapping.
 Real-time rendering-Third edition.
Art of mobile game.
• Dual Matcap shader.(Dual Paraboloid view in-dependency shader的扩展
• 相比于Cubemap,手机设备性能层面是有优势的。(特别是实时捕捉的时候)
 2015年,Eurographics会议上,Gratin开发者们发表过实际应用案例。
• 本人在实现过程中也检索到了。– 看来大家的想法都类似。
C.J. Zubiaga, A. Muñoz, L. Belcour, C. Bosch and P. Barla / MatCap Decomposition forDynamic Appearance Manipulation / The Eurographics Association 2015.
Art of mobile game.
• Dual Matcap shader.(Dual Paraboloid view in-dependency shader)的扩展
• Experimental of Debug view
// calculate the front paraboloid map texture coordinates
float2 front;
front.x = R.x / (R.z + 1);
front.y = R.y / (R.z + 1);
front.x = .5f * front.x + .5f; //bias and scale to correctly sample a d3d texture
front.y = -.5f * front.y + .5f;
// calculate the back paraboloid map texture coordinates
float2 back;
back.x = R.x / (1 - R.z);
back.y = R.y / (1 - R.z);
back.x = .5f * back.x + .5f; //bias and scale to correctly sample a d3d texture
back.y = -.5f * back.y + .5f;
float4 forward = tex2D( FrontTex, front ); // sample the front paraboloid map
float4 backward = tex2D( BackTex, back ); // sample the back paraboloid map
float4 finalColor = max(forward, backward);
http://members.gamedev.net/JasonZ/Paraboloid/DualParaboloidMappingInTheVertexShader.pdf
Art of mobile game.
• 手游美术中常用的Matcap shader.(Paraboloid view dependency shader)
• 为了做简单的示例,使用DOTA workshop形态为参考,构成了Shader Prototype。
 以DOTA为例,为MOD用户整理了Artwork document和Shader Document。
• 在内部还没有树立工作流程的时候是经常使用的方式。
 使用美术上相似的参考游戏的网格信息和质感信息,以MOD方式来实现。
© 2015 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
Art of mobile game.
• 手游美术中经常用到的数据信息
 Vertex data
 Vertex depth data
 Vertex Color ( RGBA )
 Vertex Array
 1D Ramp
 2D irradiance ( Matcap / BRDF Lookup)
 Cubemap ( Reflection )
 其它各种Lookup Texture.
 VertexColor from LightProbe
 Radiance data from ReflectionProbe
Art of mobile game.
• Node structure.
Art of mobile game.
• Tweak mesh normal to each vertex
• 没有法线贴图,网格顶点很小的时候,Matcap表现的错误是比较严重的。
• 以整体块感为基准,调整顶点法线信息。
Art of mobile game.
• Tweak mesh normal to each vertex
• 变形的顶点信息用来表现角色的高低远近。
• 以整体块感为基准,调整顶点法线信息。
Art of mobile game.
• Progress node graph structure.
Art of mobile game.
• Using vertex color data.
• Radiosity data to vertex.
• Store vertex color data from Radiosity.
Radiosity Lighting
Mesh vertex
Baking vertex color
Get vertex color
Composite with pixel
Shader side
DCC Side
Art of mobile game.
• Using vertex color data.
Radiosity Lighting
Mesh vertex
Baking vertex
color
Get vertex color
Composite with
pixel
Shader side
DCC Side
Art of mobile game.
• Using vertex color data.
Radiosity Lighting
Mesh vertex
Baking vertex
color
Get vertex color
Composite with
pixel
Shader side
DCC Side
Art of mobile game.
• Normal vector.
Art of mobile game.
• Position data.
Art of mobile game.
• 获取SH信息 (Access of Spherical Harmonic data information )
Setting to Light Probes
Light setup
Bake Light map
Store into LightingData as Binary
Get SH data via
SphericalHarmonicsL2[]
Debugging to SH data table.
SH 9 Coefficient.
SH coefficient * 9 vector interpolation = 27 value stored
light probe
Direct access through shader code : half3 ShadeSH9 (half4 normal) {}
Art of mobile game.
• 根据需要的灯光信息烘培
• Generally pbr shading on mobile devices does not enough evident expression of shading.
• Using Baked Lighting it very useful for evident shading on mobile but that is not essential.
Art of mobile game.
• Press to C key You guys could be see to baked shading from Base Color.
• Substance Painter currently provide kind of two option of baked lighting filters such as baked lighting and baked lighting environment.
• This is new feature of baked lighting.
• Just turn on to color that will be use to
composite layer or some stuff if you useable.
• 根据需要的灯光信息烘培
Mobile PBR Look-dev for intermediate.
Mobile PBR Look-dev for intermediate.
• 走向PBR的时代
Mobile PBR Look-dev for intermediate.
• NEXT GEN?
• 我们怎样定义次世代手游画面?
• 并不止意味着PBR的使用,更确切的说,指的是硬件范式更新换代的时期。
• 随着硬件范式从PlayStation 2®升级到PlayStation 4®,渲染本身发生了很大的变化。
• 手机设备也是同样,像Metal® 或者 Vulkan®等低阶API(Low level)的登场和硬件的发展。以上,
我们可以把它定义为次世代。
•
Mobile PBR Look-dev for intermediate.
• PBR看似难,其实简单
• 能量守恒
• 高光由光来决定
• 完全的金属不存在Diffuse。(理论上,不存在完全的金属)
• 重申一遍,完全的金属性的色相就是高光的色相。
• 但是,在Metallic / Roughness workflow中,此颜色是记录在Base Color中使用的。(虽然有
点混淆,暂且这样理解吧)
• 光从四面八方射进来。
• 重申一遍,高光到处都存在。(Fresnel反射应该也是同样吧?)
• 那中间物质呢?
• 分子结构上的结合物质
• 碳合成纤维、塑料、陶瓷类等等。。。和涂层略有不同。 Something like this….
Mobile PBR Look-dev for intermediate.
• 为艺术家制作标准场景
• 尽可能还原Substance Painter的工作环境。
• IBL选定工作
• White balance.
• 精密度设定
• Unity 5.6 LookDev的使用
Mobile PBR Look-dev for intermediate.
• White Balance
 PBR中环境光是比较重要的。
• 为了设定质感,要选用已经进行白平衡处理的IBL素材来使用。
Wrong white balance Corrected white balance
Mobile PBR Look-dev for intermediate.
• TC = Kelvin = Color temperature
• TC值越高,越蓝,TC值越低越红。
• 和主美一起选定标准工作用色温。
 一般在[Daylight – Direct mid summer sunlight] 和 [Average Summer Sunlight]之间决定。
 정.
Mobile PBR Look-dev for intermediate.
• Color temperature check.
• Overcast daylight和Clear blue-sky sunlight IBL source的Color temperature check。
 在Asset store中下载Unity technology提供的IBL素材。
• 直接使用HDR panorama摄影的时候,用LightRoom和Photomatrix等来尽可能校正白平衡。
Mobile PBR Look-dev for intermediate.
• Color temperature check.
• 使用Color chart。
Mobile PBR Look-dev for intermediate.
• Color temperature check.
 Unity3D 5.6 experimental LookDev - 白色颜色和Colour check.
Mobile PBR Look-dev for intermediate.
• 在设置中,不勾选Enable Tone Mapping。
Mobile PBR Look-dev for intermediate.
• Substance painter matching approach.
Mobile PBR Look-dev for intermediate.
Mobile PBR Look-dev for intermediate.
Mobile PBR Look-dev for intermediate.
 Same IBL with same exposure value.
 Back and Front lighting compare with single IBL.
Using unity3D 5.6 LOOK DEV
 Different IBL with same exposure value.
 Different IBL with Different exposure value.
Mobile PBR Look-dev for intermediate.
• 2015年以后发售的大部分手机硬件都支持PBR
• Iphone 5s以上
• 安卓SDK4.3以上
• Opengl es 2.0 extension中部分机型支持PBR
 Texcubelod( )
 Texcubebias( )
 ddxx , ddyy 大部分不支持,支持😞
• PBR渲染跟线性空间渲染、Tone mapping、HDR等都有密切的关系。
 结论就是要确保PBR渲染的稳定性的话,推荐使用Opengl es 3.X以上。
Essential of optimizing and tip.
Audience / Mobilegame graphicsshaderdesigner.
Essential of optimizing and tip.
• IPC评测和比较
• 在PowerVR 6芯片组和PowerVR 8芯片组中都编译进行了比较。
• 提升速度的芯片组ALU结构改善和编译器。
Features
•Architecture improvements for better DDR compatibility
•Full support for Compute APIs – OpenCL1.2 EP,
OpenVX1.1, Vulkan1.0
•Broad and complete graphics API support – OpenGL ES
1.1/2.0/3.2, Vulkan1.0
•Extended Design Optimization Kit (DOK)s – Enabling
wide range of clock frequencies across process
technologies
•Hardware virtualization
•Hardware security
Essential of optimizing and tip.
• Shader code unit test with disassemble…
• IPC
• 即每一时钟周期内所执行的指令多少。
• Test tool : PowerVR tools & SDK.
• ((rimFactor * rimFactor) + (rimFactor * (rimFactor * 0.425))) * _RimPower * _GlowColor;
//half r_c = pow(rimFactor , _RimPower) * _GlowColor; 是power函数代码
Essential of optimizing and tip.
• Light Model 用 Basic Lambert lighting model.
• Select compiler
Essential of optimizing and tip.
• PVRShaderEditor Disassembly check ( After Optimal )
Essential of optimizing and tip.
• PVRShaderEditor Disassembly check ( Before Optimal )
Per-line Cycle Estimate Total : 32/26f : Series 6 31/24f : Series 8XE
Essential of optimizing and tip.
• PVRShaderEditor Disassembly check ( After Optimal )
Per-line Cycle Estimate Total : 31 : Series 6 30 : Series 8XE
Essential of optimizing and tip.
• Vertex buffer object. (VBO)
• 如果不使用VBO的话,在渲染的时候,每一帧,CPU都要从RAM读取数
据,然后把它传送到显卡的内存,并在显卡中完成绘制。
• VBO方式就是提前把数据传送保存在显卡的内存中,GPU可以直接从GP
U内存读取数据来进行渲染。
• 概念上区分的话,CPU SIDE就是客户端。GPU SIDE就是服务器端。
Essential of optimizing and tip.
• Vertex buffer
• 普遍使用的Vertex buffer attribute information
• VertexArray : position
• VertexArray : normal
• VertexArray : color
• VertexArray : tex coords 1
• VertexArray : tex coords 2
.
.
.
Copyright © 2005 Nokia Corporation.
Essential of optimizing and tip.
• 用两个相同的网格来做测试
• Vert : 25
• Shell border : 1 ( 4 side )
Essential of optimizing and tip.
• 用两个相同的网格来做测试
• Vert : 25 + ? = 30
• Shell border : 2 ( 8 side )
Essential of optimizing and tip.
• UV vertex position 特性
• Vert : 25 + ? = 25 Why?
• Shell border : 2 ( 8 side )
• 对于已经Split的UV vertex position没有任何变化。
Essential of optimizing and tip.
• 用两个相同的网格来做测试
• Vert : 108
• Shell border : 4
Essential of optimizing and tip.
• 用两个相同的网格来做测试
• Vert : 108
• Shell border : 8
Essential of optimizing and tip.
• VBO Compare
• 要确认顶点信息数量会随着UV Shell结构的不同而不一样。
• 保证UV Shell的最小化对于VBO或者性能都是有帮助的。
114 verts 120 verts
Essential of optimizing and tip.
• Normal texture issues…
• Standard shader最终执行归一化。
• Mobile shader最终不执行归一化。
Uncompressed PNG or TGA
Normal data type = bumpmap
DXTnm for PC platform as DX11 Swizzle R to W as normal.xy to normal.wy
Packednormal for opengl-es
Standard shader have normalizing
o.Normal = normalize(o.Normal);
o.Normal = unpackNormal(X); //not normalize
Compressed normal texture
(PVRTC,ETC,ASTC,ATC,DXT)
Compression affect to modulated
of T-space information
White point artifact of specular shading on mobile
devices.
1. o.Normal = normalize(unpackNormal(X));
Essential of optimizing and tip.
• Normal texture issues…
• 贴图格式别,视觉化评测
• 现象确认
• 检查法线贴图资源本身有没有问题
before after
Essential of optimizing and tip.
Pre normalized just texture result but compressed result
have ugly from pvrtc.
Additional Normalized in shader code result that pretty
good. But some loss to performance.
Pre normalized just texture and compressed via ASTC
is little better than PVRTC
Not normalize and 24bit true with half sizing texture
used that pretty nice but some loss to small detail.
Mobile screen is so small size compare to pc monitor.
• Normal texture issues…
• 试验的最终目标是不在Mobile shader上面增加关于像素法线的归一化命令。
Essential of optimizing and tip.
• Normal texture issues…
UnpackNormalDXT5nm : PCE : 8UnpackNormal : PCE : 6
Essential of optimizing and tip.
• Normal texture issues…
• 格式别容量和指令增加与否的比较。
FORMAT SIZE BANDWIDTH OF MEM Requirement of
instructor
RGB PVRTC 4bit 1024 0.7mb normalize
RGB ASTC 4*4 1024 1.3mb normalize
True24bit 512 0.98mb none
Essential of optimizing and tip.
• 不要过分依赖显示器画面。
Essential of optimizing and tip.
• Avoid Throttling
Conclusion
• 结论就是,手游画面的开发,暂时还是会以过去PC画面处理经验为基础。
• 收集哪些信息,怎样灵活使用是很重要的。
• 艺术家怎样使用参考资料也是需要值得探究的。
• 任何实时处理的开销还是比较大的。
• 适当的…近似的…需要对近似值有所了解。
• 积土成山…能节省的东西都要优化。
再次感谢网易盘古游戏部引擎技术研究
中心和工作室所有开发者的支持。
Hiring!
hzlisijia1@corp.netease.com
Thank you!

More Related Content

Similar to Unite17 shanghai-lee jungpyo-neteasepangu-full chinese

Android图形系统简介
Android图形系统简介Android图形系统简介
Android图形系统简介zhucai1234
 
2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment DayFAUST CHOU
 
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)Dahui Feng
 
一起移动吧 交互篇
一起移动吧 交互篇一起移动吧 交互篇
一起移动吧 交互篇time zhong
 
杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧增强 杜
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹Johnny Sung
 
Cocos2d x presentation cocoachina-王哲
Cocos2d x presentation cocoachina-王哲Cocos2d x presentation cocoachina-王哲
Cocos2d x presentation cocoachina-王哲csdnmobile
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台Shengyou Fan
 
Behind Tetris5
Behind Tetris5Behind Tetris5
Behind Tetris5Junwen Sun
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文MAKERPRO.cc
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] PytorchTzu-Wei Huang
 
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例Shau-Hung Hsieh
 
4-習題3-2~3-3 試題37~48
4-習題3-2~3-3 試題37~484-習題3-2~3-3 試題37~48
4-習題3-2~3-3 試題37~48OIT
 
Cerebro for Animation / VFX (Chinese)
Cerebro for Animation / VFX (Chinese)Cerebro for Animation / VFX (Chinese)
Cerebro for Animation / VFX (Chinese)CineSoft
 
Game development and unity practice
Game development and unity practiceGame development and unity practice
Game development and unity practicegltop
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123oemgame
 
Kinect 2.0 Programming (1)
Kinect 2.0 Programming (1)Kinect 2.0 Programming (1)
Kinect 2.0 Programming (1)IngChyuan Wu
 

Similar to Unite17 shanghai-lee jungpyo-neteasepangu-full chinese (18)

Android图形系统简介
Android图形系统简介Android图形系统简介
Android图形系统简介
 
2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day2012 Autodesk Media &Entertainment Day
2012 Autodesk Media &Entertainment Day
 
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
 
一起移动吧 交互篇
一起移动吧 交互篇一起移动吧 交互篇
一起移动吧 交互篇
 
杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧杜增强 Flash移动开发优化技巧
杜增强 Flash移动开发优化技巧
 
zemax初级.pptx
zemax初级.pptxzemax初级.pptx
zemax初级.pptx
 
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹炎炎夏日學 Android 課程 - Part2: Android 元件介紹
炎炎夏日學 Android 課程 - Part2: Android 元件介紹
 
Cocos2d x presentation cocoachina-王哲
Cocos2d x presentation cocoachina-王哲Cocos2d x presentation cocoachina-王哲
Cocos2d x presentation cocoachina-王哲
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
Behind Tetris5
Behind Tetris5Behind Tetris5
Behind Tetris5
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] Pytorch
 
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例
Nik Collection產品的安裝與使用-以Adobe Photoshop CS6及Adobe Lightroom 4為例
 
4-習題3-2~3-3 試題37~48
4-習題3-2~3-3 試題37~484-習題3-2~3-3 試題37~48
4-習題3-2~3-3 試題37~48
 
Cerebro for Animation / VFX (Chinese)
Cerebro for Animation / VFX (Chinese)Cerebro for Animation / VFX (Chinese)
Cerebro for Animation / VFX (Chinese)
 
Game development and unity practice
Game development and unity practiceGame development and unity practice
Game development and unity practice
 
Gentek应用介绍20111123
Gentek应用介绍20111123Gentek应用介绍20111123
Gentek应用介绍20111123
 
Kinect 2.0 Programming (1)
Kinect 2.0 Programming (1)Kinect 2.0 Programming (1)
Kinect 2.0 Programming (1)
 

More from Lee Jungpyo

X2M water by 巨人网咯 2018
X2M water by 巨人网咯 2018X2M water by 巨人网咯 2018
X2M water by 巨人网咯 2018Lee Jungpyo
 
Python maya 2018 setup note
Python maya 2018 setup notePython maya 2018 setup note
Python maya 2018 setup noteLee Jungpyo
 
天谕手游图形版本
天谕手游图形版本天谕手游图形版本
天谕手游图形版本Lee Jungpyo
 
Substanceshanghaippt repacked
Substanceshanghaippt repackedSubstanceshanghaippt repacked
Substanceshanghaippt repackedLee Jungpyo
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicLee Jungpyo
 
양손 도끼 모델링 과정 작성자 (천동재.)
양손 도끼 모델링 과정 작성자 (천동재.)양손 도끼 모델링 과정 작성자 (천동재.)
양손 도끼 모델링 과정 작성자 (천동재.)Lee Jungpyo
 
바바누드바디
바바누드바디바바누드바디
바바누드바디Lee Jungpyo
 
한손 도끼 모델링 과정 (작성자 강구영)
한손 도끼 모델링 과정   (작성자 강구영)한손 도끼 모델링 과정   (작성자 강구영)
한손 도끼 모델링 과정 (작성자 강구영)Lee Jungpyo
 
코덱스 워리어 무기제작가이드 천동재
코덱스 워리어 무기제작가이드 천동재코덱스 워리어 무기제작가이드 천동재
코덱스 워리어 무기제작가이드 천동재Lee Jungpyo
 
Ndo2 가이드 강구영
Ndo2 가이드 강구영Ndo2 가이드 강구영
Ndo2 가이드 강구영Lee Jungpyo
 
Asia bootcamp devclan
Asia bootcamp devclanAsia bootcamp devclan
Asia bootcamp devclanLee Jungpyo
 
에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안Lee Jungpyo
 
에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~Lee Jungpyo
 
홍길동제안서
홍길동제안서홍길동제안서
홍길동제안서Lee Jungpyo
 
핼리네시아러프컨셉기획
핼리네시아러프컨셉기획핼리네시아러프컨셉기획
핼리네시아러프컨셉기획Lee Jungpyo
 

More from Lee Jungpyo (20)

X2M water by 巨人网咯 2018
X2M water by 巨人网咯 2018X2M water by 巨人网咯 2018
X2M water by 巨人网咯 2018
 
Python maya 2018 setup note
Python maya 2018 setup notePython maya 2018 setup note
Python maya 2018 setup note
 
天谕手游图形版本
天谕手游图形版本天谕手游图形版本
天谕手游图形版本
 
Substanceshanghaippt repacked
Substanceshanghaippt repackedSubstanceshanghaippt repacked
Substanceshanghaippt repacked
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmic
 
Cgc 2014
Cgc 2014Cgc 2014
Cgc 2014
 
양손 도끼 모델링 과정 작성자 (천동재.)
양손 도끼 모델링 과정 작성자 (천동재.)양손 도끼 모델링 과정 작성자 (천동재.)
양손 도끼 모델링 과정 작성자 (천동재.)
 
바바누드바디
바바누드바디바바누드바디
바바누드바디
 
한손 도끼 모델링 과정 (작성자 강구영)
한손 도끼 모델링 과정   (작성자 강구영)한손 도끼 모델링 과정   (작성자 강구영)
한손 도끼 모델링 과정 (작성자 강구영)
 
코덱스 워리어 무기제작가이드 천동재
코덱스 워리어 무기제작가이드 천동재코덱스 워리어 무기제작가이드 천동재
코덱스 워리어 무기제작가이드 천동재
 
Ndo2 가이드 강구영
Ndo2 가이드 강구영Ndo2 가이드 강구영
Ndo2 가이드 강구영
 
Shader EXAM.
Shader EXAM.Shader EXAM.
Shader EXAM.
 
Asia bootcamp devclan
Asia bootcamp devclanAsia bootcamp devclan
Asia bootcamp devclan
 
Codex project
Codex projectCodex project
Codex project
 
에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안에코노베이션 3차 세미나 교안
에코노베이션 3차 세미나 교안
 
에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~에코노베이션 3차 세미나 교안 1st Edition.~
에코노베이션 3차 세미나 교안 1st Edition.~
 
Resume
ResumeResume
Resume
 
Pre analyze for
Pre analyze forPre analyze for
Pre analyze for
 
홍길동제안서
홍길동제안서홍길동제안서
홍길동제안서
 
핼리네시아러프컨셉기획
핼리네시아러프컨셉기획핼리네시아러프컨셉기획
핼리네시아러프컨셉기획
 

Unite17 shanghai-lee jungpyo-neteasepangu-full chinese

  • 1.
  • 2. LEE JUNGPYO Technical Director of art, Netease Pangu game studio
  • 3. Art of mobile game. Mobile PBR Look-dev for intermediate. Essential of optimizing and tip.
  • 4. Audience (听众) Mobile game graphics artists. Shader designer.
  • 5. Art of mobile game. Audience / Mobilegame graphicsartists.
  • 6. Art of mobile game. 暂时先把Unity给忘掉吧😬
  • 7. Art of mobile game. • 适用于手游美术的Shader? • 回顾下过去 • 我们看下14年前,在2003年开发的PC游戏画面。 • G-Force FX 5.xxx -2003年1月发售的第五代G-Force产品。 • 简单的说就是支持DirectX 9.0 和 Opengl 2.0 。 • 大致的手机画面? • 在座的各位,14年前又是多大呢? 😄
  • 8. Art of mobile game. • 我们看下14年前,在2003年开发的PC游戏画面。  天堂2和天堂2翼人 的画面比较。 天堂2 翼人 (2007年下半年)天堂 2 ( 2003年 10月 )
  • 9. Art of mobile game. • 我们看下14年前,在2003年开发的PC游戏画面。  确切地说,刚好10年!!! 天堂2 翼人 (2007年下半年): PC 天堂2誓言 (2017年) : 手游
  • 10. Art of mobile game. • 表现简洁的设计和手绘风很好的案例  龙之谷 龙之谷 (2008年) : PC
  • 11. Art of mobile game. • 提升手游美术效果的Shader • 依旧是手绘插画的话,对此可能会没有兴趣。其实,审美的感觉比Shader是要来得重要的。 • 维尔福软件的大多数作品和独立游戏风之旅人就是极具代表性的例子。
  • 12. Art of mobile game. • 对美术风格进行以下分类  以美术感性为中心的制作 • 与以往不同,用Shader来表现灯光效果,加强立体感的Dota2创意工坊。  虽然是PBR,以美术感性为中心,控制细节体现等的守望先锋风格。 © 2015 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
  • 13. Art of mobile game. • 对美术风格进行以下分类  以美术感性为中心的制作  虽然使用了高级Shader技术,但美术表现要来得更具shading风格 • 适用于小规模的RPG游戏,或者迷你游戏
  • 14. Art of mobile game. • 对美术风格进行以下分类  以美术感性为中心的制作  美术感性和技术理解完美结合的案例 © 2017 Georgius
  • 15. Art of mobile game. • 2011年,仅由包括我在内的两名开发者开发的原型。Unity3D 3.0 原型开发:3D艺术家一名 + 本人 被当选为NVIDIA TEGRA 4 Global contents 2011年的当时,也称为次世代 游戏最重要的还是趣味性,比较乏味 所以,收益不好
  • 16. Art of mobile game. • 在2011年,其实,也对Shader做了诸多的的改善。 • 特别是金属质感表现,或者皮肤表现等。
  • 17. Art of mobile game. • 适用于手游美术的Shader? • 2012年,大多数的智能手机仅支持opengl-es 2.0。 • 2014年,随着opengl-es 2.0 extention版本的登场,部分旗舰机型开始支持opengl-es 3.0。 • 2016年之后,支持opengl-es 3.0以上的机型比重急剧上涨。 • 未来,支持opengl-es 3.1以上的智能手机会成为主流登场。 • 智能手机厂商也得拿出新的卖点,也会大力开展Vulkan营销。 • 照相机像素的竞争已经走到尽头了,剩下的就是显卡性能了。 • 电池在2016年更新过一次,暂时应该不会有大的动静。(除非等苹果开发完成wifi充 电技术。)
  • 18. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) • 性能层面的好处:尽管命令不少,实际从性能层面考虑,性价比还是挺高的。  也因2005年Pixologic Zbrush中应用的材质球系统而出名。
  • 19. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) https://www.clicktorelease.com/code/spherical-normal-mapping/#
  • 20. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) • 性能层面的好处:尽管命令不少,实际从性能层面考虑,性价比还是挺高的。 • 始于2004年发表的Parabolic reflection。 • 优点: • 运算快(完全代替灯光) • 缺点: • 灯光效果从属于视角方向。
  • 21. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) • 应用案例(韩国) • 多数2.5D游戏都有使用 • 自行修正效果使用。 跑男 (2012年) : 手游 测试Demo (2012年) : 手游
  • 22. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) • 重要的是制作怎样的Matcap lit-sphere信息来使用。  存在多种制作方法。 • 可以手工在Photoshop里面画。  用Matcap creation工具来制作。(http://www.zbrushcentral.com/showthread.php?92157-MaCrea-Material-Creation- Tool) • 在Zbrush中使用Grab来确保素材。 • Perspective correction中是有问题的
  • 23. Art of mobile game. • Compare of Reflection method. Source build for Compare through LYS from Knald tech.
  • 24. Art of mobile game. • Compare of Reflection method. Source build for Compare through LYS from Knald tech.
  • 25. Art of mobile game. • Compare of Reflection method. Matcap with debugging coordinate.
  • 26. Art of mobile game. • Compare of Reflection method. Matcap Direct access reflection probe Roughness map combined
  • 27. Art of mobile game. • Compare of Reflection method. • 非Standard shader的时候,给粗糙度贴图乘以常数2.5左右的值。
  • 28. Art of mobile game. • Matcap shader.(Parabolic view dependency shader)的扩展  Dual paraboloid mapping.  Real-time rendering-Third edition.
  • 29. Art of mobile game. • Dual Matcap shader.(Dual Paraboloid view in-dependency shader的扩展 • 相比于Cubemap,手机设备性能层面是有优势的。(特别是实时捕捉的时候)  2015年,Eurographics会议上,Gratin开发者们发表过实际应用案例。 • 本人在实现过程中也检索到了。– 看来大家的想法都类似。 C.J. Zubiaga, A. Muñoz, L. Belcour, C. Bosch and P. Barla / MatCap Decomposition forDynamic Appearance Manipulation / The Eurographics Association 2015.
  • 30. Art of mobile game. • Dual Matcap shader.(Dual Paraboloid view in-dependency shader)的扩展 • Experimental of Debug view // calculate the front paraboloid map texture coordinates float2 front; front.x = R.x / (R.z + 1); front.y = R.y / (R.z + 1); front.x = .5f * front.x + .5f; //bias and scale to correctly sample a d3d texture front.y = -.5f * front.y + .5f; // calculate the back paraboloid map texture coordinates float2 back; back.x = R.x / (1 - R.z); back.y = R.y / (1 - R.z); back.x = .5f * back.x + .5f; //bias and scale to correctly sample a d3d texture back.y = -.5f * back.y + .5f; float4 forward = tex2D( FrontTex, front ); // sample the front paraboloid map float4 backward = tex2D( BackTex, back ); // sample the back paraboloid map float4 finalColor = max(forward, backward); http://members.gamedev.net/JasonZ/Paraboloid/DualParaboloidMappingInTheVertexShader.pdf
  • 31. Art of mobile game. • 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) • 为了做简单的示例,使用DOTA workshop形态为参考,构成了Shader Prototype。  以DOTA为例,为MOD用户整理了Artwork document和Shader Document。 • 在内部还没有树立工作流程的时候是经常使用的方式。  使用美术上相似的参考游戏的网格信息和质感信息,以MOD方式来实现。 © 2015 Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.
  • 32. Art of mobile game. • 手游美术中经常用到的数据信息  Vertex data  Vertex depth data  Vertex Color ( RGBA )  Vertex Array  1D Ramp  2D irradiance ( Matcap / BRDF Lookup)  Cubemap ( Reflection )  其它各种Lookup Texture.  VertexColor from LightProbe  Radiance data from ReflectionProbe
  • 33. Art of mobile game. • Node structure.
  • 34. Art of mobile game. • Tweak mesh normal to each vertex • 没有法线贴图,网格顶点很小的时候,Matcap表现的错误是比较严重的。 • 以整体块感为基准,调整顶点法线信息。
  • 35. Art of mobile game. • Tweak mesh normal to each vertex • 变形的顶点信息用来表现角色的高低远近。 • 以整体块感为基准,调整顶点法线信息。
  • 36. Art of mobile game. • Progress node graph structure.
  • 37. Art of mobile game. • Using vertex color data. • Radiosity data to vertex. • Store vertex color data from Radiosity. Radiosity Lighting Mesh vertex Baking vertex color Get vertex color Composite with pixel Shader side DCC Side
  • 38. Art of mobile game. • Using vertex color data. Radiosity Lighting Mesh vertex Baking vertex color Get vertex color Composite with pixel Shader side DCC Side
  • 39. Art of mobile game. • Using vertex color data. Radiosity Lighting Mesh vertex Baking vertex color Get vertex color Composite with pixel Shader side DCC Side
  • 40. Art of mobile game. • Normal vector.
  • 41. Art of mobile game. • Position data.
  • 42. Art of mobile game. • 获取SH信息 (Access of Spherical Harmonic data information ) Setting to Light Probes Light setup Bake Light map Store into LightingData as Binary Get SH data via SphericalHarmonicsL2[] Debugging to SH data table. SH 9 Coefficient. SH coefficient * 9 vector interpolation = 27 value stored light probe Direct access through shader code : half3 ShadeSH9 (half4 normal) {}
  • 43. Art of mobile game. • 根据需要的灯光信息烘培 • Generally pbr shading on mobile devices does not enough evident expression of shading. • Using Baked Lighting it very useful for evident shading on mobile but that is not essential.
  • 44. Art of mobile game. • Press to C key You guys could be see to baked shading from Base Color. • Substance Painter currently provide kind of two option of baked lighting filters such as baked lighting and baked lighting environment. • This is new feature of baked lighting. • Just turn on to color that will be use to composite layer or some stuff if you useable. • 根据需要的灯光信息烘培
  • 45. Mobile PBR Look-dev for intermediate.
  • 46. Mobile PBR Look-dev for intermediate. • 走向PBR的时代
  • 47. Mobile PBR Look-dev for intermediate. • NEXT GEN? • 我们怎样定义次世代手游画面? • 并不止意味着PBR的使用,更确切的说,指的是硬件范式更新换代的时期。 • 随着硬件范式从PlayStation 2®升级到PlayStation 4®,渲染本身发生了很大的变化。 • 手机设备也是同样,像Metal® 或者 Vulkan®等低阶API(Low level)的登场和硬件的发展。以上, 我们可以把它定义为次世代。 •
  • 48. Mobile PBR Look-dev for intermediate. • PBR看似难,其实简单 • 能量守恒 • 高光由光来决定 • 完全的金属不存在Diffuse。(理论上,不存在完全的金属) • 重申一遍,完全的金属性的色相就是高光的色相。 • 但是,在Metallic / Roughness workflow中,此颜色是记录在Base Color中使用的。(虽然有 点混淆,暂且这样理解吧) • 光从四面八方射进来。 • 重申一遍,高光到处都存在。(Fresnel反射应该也是同样吧?) • 那中间物质呢? • 分子结构上的结合物质 • 碳合成纤维、塑料、陶瓷类等等。。。和涂层略有不同。 Something like this….
  • 49. Mobile PBR Look-dev for intermediate. • 为艺术家制作标准场景 • 尽可能还原Substance Painter的工作环境。 • IBL选定工作 • White balance. • 精密度设定 • Unity 5.6 LookDev的使用
  • 50. Mobile PBR Look-dev for intermediate. • White Balance  PBR中环境光是比较重要的。 • 为了设定质感,要选用已经进行白平衡处理的IBL素材来使用。 Wrong white balance Corrected white balance
  • 51. Mobile PBR Look-dev for intermediate. • TC = Kelvin = Color temperature • TC值越高,越蓝,TC值越低越红。 • 和主美一起选定标准工作用色温。  一般在[Daylight – Direct mid summer sunlight] 和 [Average Summer Sunlight]之间决定。  정.
  • 52. Mobile PBR Look-dev for intermediate. • Color temperature check. • Overcast daylight和Clear blue-sky sunlight IBL source的Color temperature check。  在Asset store中下载Unity technology提供的IBL素材。 • 直接使用HDR panorama摄影的时候,用LightRoom和Photomatrix等来尽可能校正白平衡。
  • 53. Mobile PBR Look-dev for intermediate. • Color temperature check. • 使用Color chart。
  • 54. Mobile PBR Look-dev for intermediate. • Color temperature check.  Unity3D 5.6 experimental LookDev - 白色颜色和Colour check.
  • 55. Mobile PBR Look-dev for intermediate. • 在设置中,不勾选Enable Tone Mapping。
  • 56. Mobile PBR Look-dev for intermediate. • Substance painter matching approach.
  • 57. Mobile PBR Look-dev for intermediate.
  • 58. Mobile PBR Look-dev for intermediate.
  • 59. Mobile PBR Look-dev for intermediate.  Same IBL with same exposure value.  Back and Front lighting compare with single IBL. Using unity3D 5.6 LOOK DEV  Different IBL with same exposure value.  Different IBL with Different exposure value.
  • 60. Mobile PBR Look-dev for intermediate. • 2015年以后发售的大部分手机硬件都支持PBR • Iphone 5s以上 • 安卓SDK4.3以上 • Opengl es 2.0 extension中部分机型支持PBR  Texcubelod( )  Texcubebias( )  ddxx , ddyy 大部分不支持,支持😞 • PBR渲染跟线性空间渲染、Tone mapping、HDR等都有密切的关系。  结论就是要确保PBR渲染的稳定性的话,推荐使用Opengl es 3.X以上。
  • 61. Essential of optimizing and tip. Audience / Mobilegame graphicsshaderdesigner.
  • 62. Essential of optimizing and tip. • IPC评测和比较 • 在PowerVR 6芯片组和PowerVR 8芯片组中都编译进行了比较。 • 提升速度的芯片组ALU结构改善和编译器。 Features •Architecture improvements for better DDR compatibility •Full support for Compute APIs – OpenCL1.2 EP, OpenVX1.1, Vulkan1.0 •Broad and complete graphics API support – OpenGL ES 1.1/2.0/3.2, Vulkan1.0 •Extended Design Optimization Kit (DOK)s – Enabling wide range of clock frequencies across process technologies •Hardware virtualization •Hardware security
  • 63. Essential of optimizing and tip. • Shader code unit test with disassemble… • IPC • 即每一时钟周期内所执行的指令多少。 • Test tool : PowerVR tools & SDK. • ((rimFactor * rimFactor) + (rimFactor * (rimFactor * 0.425))) * _RimPower * _GlowColor; //half r_c = pow(rimFactor , _RimPower) * _GlowColor; 是power函数代码
  • 64. Essential of optimizing and tip. • Light Model 用 Basic Lambert lighting model. • Select compiler
  • 65. Essential of optimizing and tip. • PVRShaderEditor Disassembly check ( After Optimal )
  • 66. Essential of optimizing and tip. • PVRShaderEditor Disassembly check ( Before Optimal ) Per-line Cycle Estimate Total : 32/26f : Series 6 31/24f : Series 8XE
  • 67. Essential of optimizing and tip. • PVRShaderEditor Disassembly check ( After Optimal ) Per-line Cycle Estimate Total : 31 : Series 6 30 : Series 8XE
  • 68. Essential of optimizing and tip. • Vertex buffer object. (VBO) • 如果不使用VBO的话,在渲染的时候,每一帧,CPU都要从RAM读取数 据,然后把它传送到显卡的内存,并在显卡中完成绘制。 • VBO方式就是提前把数据传送保存在显卡的内存中,GPU可以直接从GP U内存读取数据来进行渲染。 • 概念上区分的话,CPU SIDE就是客户端。GPU SIDE就是服务器端。
  • 69. Essential of optimizing and tip. • Vertex buffer • 普遍使用的Vertex buffer attribute information • VertexArray : position • VertexArray : normal • VertexArray : color • VertexArray : tex coords 1 • VertexArray : tex coords 2 . . . Copyright © 2005 Nokia Corporation.
  • 70. Essential of optimizing and tip. • 用两个相同的网格来做测试 • Vert : 25 • Shell border : 1 ( 4 side )
  • 71. Essential of optimizing and tip. • 用两个相同的网格来做测试 • Vert : 25 + ? = 30 • Shell border : 2 ( 8 side )
  • 72. Essential of optimizing and tip. • UV vertex position 特性 • Vert : 25 + ? = 25 Why? • Shell border : 2 ( 8 side ) • 对于已经Split的UV vertex position没有任何变化。
  • 73. Essential of optimizing and tip. • 用两个相同的网格来做测试 • Vert : 108 • Shell border : 4
  • 74. Essential of optimizing and tip. • 用两个相同的网格来做测试 • Vert : 108 • Shell border : 8
  • 75. Essential of optimizing and tip. • VBO Compare • 要确认顶点信息数量会随着UV Shell结构的不同而不一样。 • 保证UV Shell的最小化对于VBO或者性能都是有帮助的。 114 verts 120 verts
  • 76. Essential of optimizing and tip. • Normal texture issues… • Standard shader最终执行归一化。 • Mobile shader最终不执行归一化。 Uncompressed PNG or TGA Normal data type = bumpmap DXTnm for PC platform as DX11 Swizzle R to W as normal.xy to normal.wy Packednormal for opengl-es Standard shader have normalizing o.Normal = normalize(o.Normal); o.Normal = unpackNormal(X); //not normalize Compressed normal texture (PVRTC,ETC,ASTC,ATC,DXT) Compression affect to modulated of T-space information White point artifact of specular shading on mobile devices. 1. o.Normal = normalize(unpackNormal(X));
  • 77. Essential of optimizing and tip. • Normal texture issues… • 贴图格式别,视觉化评测 • 现象确认 • 检查法线贴图资源本身有没有问题 before after
  • 78. Essential of optimizing and tip. Pre normalized just texture result but compressed result have ugly from pvrtc. Additional Normalized in shader code result that pretty good. But some loss to performance. Pre normalized just texture and compressed via ASTC is little better than PVRTC Not normalize and 24bit true with half sizing texture used that pretty nice but some loss to small detail. Mobile screen is so small size compare to pc monitor. • Normal texture issues… • 试验的最终目标是不在Mobile shader上面增加关于像素法线的归一化命令。
  • 79. Essential of optimizing and tip. • Normal texture issues… UnpackNormalDXT5nm : PCE : 8UnpackNormal : PCE : 6
  • 80. Essential of optimizing and tip. • Normal texture issues… • 格式别容量和指令增加与否的比较。 FORMAT SIZE BANDWIDTH OF MEM Requirement of instructor RGB PVRTC 4bit 1024 0.7mb normalize RGB ASTC 4*4 1024 1.3mb normalize True24bit 512 0.98mb none
  • 81. Essential of optimizing and tip. • 不要过分依赖显示器画面。
  • 82. Essential of optimizing and tip. • Avoid Throttling
  • 83. Conclusion • 结论就是,手游画面的开发,暂时还是会以过去PC画面处理经验为基础。 • 收集哪些信息,怎样灵活使用是很重要的。 • 艺术家怎样使用参考资料也是需要值得探究的。 • 任何实时处理的开销还是比较大的。 • 适当的…近似的…需要对近似值有所了解。 • 积土成山…能节省的东西都要优化。

Editor's Notes

  1. 尊敬的先生女士们,大家好。 我是来自网易盘古游戏部的技术美术总监李正彪。 本次是我作为主讲嘉宾,第二次参加Ulite。 2012年第一次参加Ulite大会,我演讲主题是次世代手游画面的实现。 再次诚挚地感谢Ulite中国组委会对我的邀请。 今天下午我们已经听了很多非常棒的技术讲座,所以,也希望各位能以一种轻松的心态来听我的讲座。
  2. 今天演讲的主题主要可以分为三部分。 因为演讲时间有限,所以我把这三点也做了浓缩。 其实,我们平时接触的大多数图形学技术,都可以通过谷歌社区、GDC、SIGGRAPH等,检索到相关发表过的论文,很多都是我们已经知道的内容。 如果,在位的哪位对图形学有兴趣的话,那么,当你读完GPU PRO 7为止的话,就会觉得,大部分现阶段流行的Shader技法,其实也没有那么难。 更何况,Shader技术以PBR为基点,逐渐在此范围之内得到广泛的应用,2018年,程序式处理技法应该会成为流行趋势。 接下里,我们再以回顾的心态,来着重谈谈Shader和美术表现。 Art of mobile game 에서는 아티스트를 위한 과거와 현재 그리고 미래를 이야기 합니다. 당연히 미술적인 표현에 중점을 뒀습니다. Essential of optimizing shader for expert 에서는 세이더 디자이너가 알면 좋을 에뮬레이터 상에서 세이더 코드를 디어셈블리 확인 하며 명령어를 최소화 하는 접근을 다룹니다. Mobile PBR Look-dev for intermediate 에서는 유니티 5.6 에 추가 된 Look-Dev 을 살펴 보고 HDR 표준 정보의 White point balance 그리고 관계 된 몇 가지 PBR 에 대한 내용들을 살펴 볼 것입니다. 对于手游美术这块,想为艺术家们讲下过去、现在、将来,当然主要集中于美术表现。 作为专家,必须要知道的Shader优化方法主要包含了以下内容,确认代码反汇编,优化使用最少的指令。 最后一部分的话,我们主要一起来看下Unity5.6中新增的Look-Dev,HDR标准信息的White point balance和其有关的几个PBR相关的内容。
  3. 对于观众的定义。 本人衷心的希望,此次讲座能成为我和在手游开发行业从事的各位艺术家和负责Shader设计工作的工程师之间沟通的桥梁。
  4. 手游美术 听众: 手游美术艺术家
  5. 第一部分的内容主要包括了对游戏画面发展历程的回顾,手机设备环境下,美术层面的构想和实现。 硬件的通性,或者由Shader版本的不同所带来的不同的画面实现方式,并且都跟过去做了比较。 同时,会介绍几种值得推荐的美术表现,传递一些更加符合手机设备环境的信息。
  6. 适用于手游美术的Shader是怎样的Shader呢? G-Force FX 5.xxx -2003年1月发售的第五代G-Force产品。 简单的说就是支持DirectX 9.0 和 Opengl 2.0 。
  7. 2003年,NCsoft的天堂2上线。 以此为出发点,韩国开始逐渐引入贴图和灯光的概念。 同年,技术美术这个岗位开始在游戏公司形成。 随着支持DXT9.0和OpenGL2.0的硬件在市场上占据的份额越来越大,游戏画面的品质也从过去依靠手绘,过渡到依靠使用灯光和凹凸贴图来表现效果的高品质画面。 本人也是在这个时候,开始接触使用Shader的光照模型编程。 天堂2上线五年之后,当时开发天堂2的虚幻引擎从2.0升级到了2.5,新种族翼人使用的是当时的新技术。 2007年,虚幻3.0已经上线,有很多游戏都已经使用了虚幻3.0的高级技术。
  8. 回顾手游开发的过去10年,今天的手游画面变得愈发精致。 甚至,通过近似算法,在手机硬件上也能进行基于物理的渲染和线性空间渲染。
  9. 龙之谷仅使用了简单的的动态灯光处理,Shader本身也没做特别的处理,整体的设计跟一贯的美术表现方式做了完美的衔接,甚至,对于今天的手游开发者来说,也是一个很好的案例。
  10. 如果还依旧坚持传统的Artwork的话,那么对此可能会没有兴趣。 其实,审美的感觉对于Shader开发也是很重要的一部分。 以上两家公司的作品就极具代表性的。
  11. 开发Shader,先要考虑美术表现方法。对于表现方法的思考本身和技术实现之间有密切的联系,所以资料调查很重要,或者需要花很长的时间去思考。 利用百度或者谷歌,我们可以找到从20年前到至今为止发表的所有Shader技术相关的论文。 所以,在今天,要全新开发一样东西,是非常难的。 Dota2是一个很好的参考资料,从配色表到Shader应用文档为止,都有提供。 从Dota2材质球编辑器可以看出,为了表现出金属质感,使用了cubemap。 我们根据游戏镜头角度可以使用Cubemap,也可以使用抛物面贴图。 对于表现质感来说,环境贴图,即Cubemap,是很好的表现手段。
  12. 视觉上的独创性,可以通过各种尝试来实现。 如上所示的平面Shading和几何形态,可以通过设计来完成更加优秀的美术表现。 最终品质主要取决于怎样配色,怎样用灯光和Shader来表现出整体氛围。 被微软收购的我的世界,是一个以传统2D游戏中常见的Metro(메트로)设计移植为三维的一个很好的案例。
  13. 美术的造型和达到最终表现的方法跟对技术的理解是分不开的。 参考图是艺术家为了表现出水墨卡通渲染而在ZBrush中制作的例子,在这个例子中,艺术家很清楚,怎样的技术最终能实现怎样的表现。 这种参考充分能应用于实时渲染中,所以是很好的参考资料。
  14. 以上是2011年,仅由包括我在内的两名开发者开发的原型。 基于TEGRA 4系列硬件开发,引擎选用了Unity3.0。 2011年的当时,这种程度的画面也被称之为次世代手游,甚至荣获在GDC2012参展的殊荣。 还记得在当时的手机上,Unity还没有处理深度贴图阴影的功能,阴影部分都是单独实现的,跟Unity5.6相比,开发环境还是很恶劣的。 Unity5.6更新之后,相对有了一个更加友好的手游开发环境。但是,对最近才接触使用Unity的开发者来说,使用起来可能还能感受到诸多的不便。
  15. 2011年,关于质感表现也做了诸多的测试,仅用Unity基本Shader来实现表现,还是会受到许多的限制。 在当时,硬件性能刚好处于从iphone 3GS过渡到iphone4的时期,金属质感表现使用了简化版的Cook-Torrance(托伦斯)光照模型和半球面反射mapping,仅此而已。 再加上,当时的大部分开发者对强化Shader方面也不够重视,所以只能通过查阅2001至2006年的SIGGRAPH论文资料来获取信息。 最后,想跟在座的各位说的是,我们能从过去的硬件平台中获取到很多的提示。 2006年所提出的双抛物面映射,在2016年又重新受到了重视。 2016年,在GDC上介绍了双抛物面技术来对VR性能做优化。
  16. 2012年,大多数的智能手机仅支持opengl-es 2.0。 2014年,随着opengl-es 2.0 extention版本的登场,部分旗舰机型开始支持opengl-es 3.0。 2016年之后,支持opengl-es 3.0以上的机型比重急剧上涨。 未来,支持opengl-es 3.1以上的智能手机会成为主流登场。
  17. 手游美术中常用的Matcap shader.(Paraboloid view dependency shader) 性能层面的好处:尽管指令不少,实际从性能层面考虑,性价比还是挺高的。 也因2005年Pixologic Zbrush中应用的材质球系统而出名。
  18. 上图就是大家所熟知的Shading效果。
  19. 性能层面的好处:尽管指令不少,实际从性能层面考虑,性价比还是挺高的。 它主要始于2004年发表的抛物面反射。 优点:运算快(完全代替灯光) 缺点:灯光效果从属于视角方向。
  20. 以上是2012年在其它公司游戏中应用的案例。
  21. 重要的是制作怎样的Matcap lit-sphere信息来使用。 这里存在多种制作方法,可以用Photoshop直接制作,或者也可以用Matcap creation tool 来制作。 或者,在Zbrush中,用Grab【græb】来制作,本人的话,irradiance【ɪˈreɪdiəns】信息是用Octane【ˈɒkteɪn】渲染器来制作的。 下一页我会简单讲下使用LYS的案例。
  22. 不使用PBR Shader,应用反射模型的方法有很多种。 学习Irradiance【ɪˈreɪdiəns】和Radiance【ˈreɪdiəns】的各种运算模型的话,Knald날드的LYS是一款很好的软件。
  23. 可以确认坐标系。
  24. 在Unity中使用matcap shader并确认。
  25. 应用Matcap和反射探针的Shader间的比较。 色相空间虽然略微存在点差异,但通过Photoshop是能够校正的。
  26. 不使用Unity的PBR标准shader,使用Unity反射探针函数来实现反射的时候,请给粗糙度贴图乘以一个2.2到2.5左右的常数值。
  27. 以上是弥补了Matcap shader缺点的双抛物面映射。 现在,虽然还处于试验阶段,简单来给大家介绍一下。
  28. 相比于Cubemap,手机设备性能层面是有优势的。 2015年,Eurographics会议上,Gratin【ˈgrætæn】开发者们发表过实际应用案例。 本人在2015年进行类似的实现预研的时候,看到了这篇论文,看来大家的想法都比较类似啊。 不管怎么说。。
  29. 简单的说就是把抛物面镜子放置在正面和背面,来导出反射信息。 跟Cube mapping相比,可能会略有扭曲现象发生,但是看起来并不碍眼。 上图是在Unity中进行坐标系调试的场景。
  30. 接下来,使用DOTA workshop形态为参考,构成了Shader Prototype。 以DOTA为例,为MOD用户整理了Artwork document和Shader Document。 设定新的游戏体裁或者美术方向的时候,使用参考游戏的网格和质感信息,以MOD方式为切入点来做试验也是一种很好的方式。
  31. 我大致罗列了一下我能获取并且使用的信息。 有几个信息虽然受Opengl es版本的限制,但充分有其使用的价值。 因为中国手机硬件版本更新换代的速度远比我们想象中的要快。
  32. 接下来看下Matcap自定义灯光简略的节点图表。 我们要基于此,寻求思路,校正游戏中被表现的物件的特性,并且要看它在美术上发挥的作用。
  33. 反正在手机屏幕上看起来并不那么显眼,用阴影的块感来表现立体感也是非常好的方法。
  34. 正在试验尝试信息变形的过程。 顶点的法线方向是从其它网格的法线方向中捕捉而来。 它会反应到dot(NL)上面,并且能够生成人为的暗部效果。 但是,要注意的是 用在没有使用法线贴图的游戏数据的时候,是有效果的,如果使用了法线贴图,那么信息就有可能会出错。 其实,本次讲座的重点还是在通过对我们能够使用的信息的变形,来了解我们能做哪些事情。
  35. 为简单的Lambert光照模型、matcap irradiance [ɪˈreɪdiəns]和Ambient cube map添加了反射探针和光照探针。 该部分为美术视觉化提供了试验。 在开发试验阶段,一般要先从性能以外层面入手,然后再删除或者隐藏在探索阶段觉得不需要的信息。 在最终定版中,要保证代码的整洁和优化。 从试验阶段开始,到着手面向对象的代码处理,直观性是比较低的。
  36. 顶点色可以用多种方法来表现手游的效果。 把一些光照信息用顶点色保存于网格中,来开发Shader。
  37. 把Radiosity渲染的信息转换为顶点色信息,可以连接到Shader上。 在手游开发环境中,无法使用多个灯光效果,所以,我们有必要努力使用多个信息来表现出最佳的效果。
  38. 它在手游场景中,生成和使用光照贴图是有帮助的。 根据小画面中看到的物体的大小的不同,有些物件把Radiocity light bake的信息是记录在顶点色上,然后在Shader中合成。 在烘培光照贴图的时候排除这一步骤的话,光照贴图区域分配的时候,可以把这部分区域分配给更加重要的物件。
  39. 以上是由简单的计算式来构成的Vertical gradient 【ˈvɜ:tɪkl,ˈgreɪdiənt】信息。 其实,使用预生成的信息要比使用Dot product, 对法线向量进行计算要来的好。
  40. 也推荐生成使用Vertex position map。
  41. SH信息是由27个信息构成的。对于RGB,记录了9个方向的采样信息,全部保存在了LIghtingData里面。 我们可以使用SH2来获取或者记录它。 编写自定义Shader的时候,ShadeSH9函数是非常有用的,应用权重可以使用SetGlobalFloat来控制。
  42. 手游开发者在PC显示器环境中进行开发。 有时候关于色感或者光的表现,跟在PC上面看的时候相比,会表现的比较模糊。对于这种现象,我们的美术组通过使用烘培灯光过滤来校正。 从原理上来看,在PBR的Albedo上绝对不能有除了Colour之外的信息,美术层面,有时候也需要脱离原理。
  43. 以上是Substance painter 中提供的烘培灯光滤镜。
  44. 不久的将来,PBR将会在手游开发中广泛使用。
  45. 我们该怎样定义次世代手游画面呢? 其实,并不止意味着PBR的使用,更确切的说,指的是硬件范式更新换代的时期。 随着硬件范式从PlayStation 2升级到PlayStation 4,渲染本身发生了很大的变化。 手机设备也是同样,像Metal 或者 Vulkan等低阶API(Low level)的登场和硬件的发展。以上,我们可以把它定义为次世代。
  46. PBR其实不用想的那么复杂,只要熟知几点基本要素就足够了。 最具代表性的是以下两点性质。 第一点,能量守恒。 入射光和反射光的能量总量遵循互换法则。 而且,基于这种现象的高光也是由光来决定的。 完全的金属不存在Diffuse。(理论上,不存在完全的金属) 再次重申一遍,完全的金属性色相就是高光的色相。 但是,在金属度/粗糙度工作流程中,这个颜色是记录在Base Color中来使用的。(虽然有点混淆,暂且这样理解吧) 光从四面八方射进来。 重申一遍,高光到处都存在,所以,菲涅尔现象也是同样。 那中间物质呢?所谓中间物质,指的就是分子结构上的结合物质。 我们可以简单的做如下定义,世界上单独由分子结构构成的纯粹的物质是不多的。特别是现代社会。 陶瓷类等等。。。跟涂层略有不同。 还有,区分是导体、绝缘体,还是半导体部分,从化学层面来判断,是根据分子,或者原子的结晶结构来最终决定它的导电性。 结论上来看,实时PBR虽然也不能完美的表现出物体,但是已经足够我们使用了。
  47. 现在,很多的中国游戏公司也开始使用Substance Painter了。 PBR texturing唯独受环境反射贴图的影响是比较大的,所以工作环境对于结果要做适当的校正。 使用IBL的White Balance和Unity5.6的Look-Dev是很好的方法。
  48. 看Unity5.6的Look-Dev或者Substance Painter之前,首先得要知道White balance 。 这一点非常重要。 手游中实现时间变化系统的游戏不是很多,基本使用的环境效果都是中午12点到下午2点,所以,我们需要正确表现出这个时间段的质感颜色。 一般,如果已经对准了中午12点到下午两点,一个晴朗的天气环境中环境光的白平衡的话,在室内,或者夜晚时间的色温,也能正确地表现出事物的色相。
  49. 根据环境贴图时间带的不同,白色不一定会展现为白色。 一般TC是5500的话,为了达到材质球标准场景设定,White Balance是一个不错的选择。 确认材质球颜色最常用的方法就是使用Studio Lighting。 但是,类似于Studio Lighting这样的人为灯光环境,在初期研究与开发阶段,工程师开发PBR的时候要更符合Shader调试环境,艺术家应该以游戏中给玩家展现的最多的环境为基准来制作。
  50. 希望检查一下Overcast daylight 和 Clear blue-sky sunlight IBL素材的色温度。 天空光比较强烈,White Balance不正确的时候,即使是大白天,也有可能给物体裹上一层强烈的青色感。 可以在Asset store中下载Unity technology提供的IBL素材。 直接使用HDR全景图拍摄图片的时候,用LightRoom和Photomatrix等来尽可能校正White balance 。
  51. 请设定色温和色相,即对于Colour的标准渲染场景。 最好的标准场景模板是使用White balance正确的IBL素材和Color checker。
  52. 从Unity5.6开始,新增了可以比较由环境光带来变化的Look-Dev界面。  有必要确认一下IBL环境光的色调,即Colour是否有变更。
  53. LookDev中提供的Tone Mapping最好不要勾选。 手游也可以不使用Tone Mapping,首先,Tone Mapping的算法跟我们打算要使用的Tone Mapping算法要一致,所以,执行基本Colour check的时候,请把它关掉。 一般艺术家如果充分认为灰色调是没有被污染的话,其它颜色是没有问题的,但是根据曝光值的不同,受环境光影响的程度也会有所差别,所以,一定要用正确的曝光值做测试。 除非是特殊情况,否则不要对曝光值做过分的修改。
  54. 大家用的最多的,可能就是Substance Painter里面提供的全景图照片。 这些IBL素材有何时的天空光,少量的云,也有太阳光信息和黄土色地表。 这些图已经大致进行了White Balance校正。值大概是5500到6000之间。
  55. 基本上Substance painter和Unity3D的不同点就是关于主光的方向性部分。 还有对AO信息和高光反射处理部分的Shader也有所不同。 如果,能接受这部分的话,在理解相互不同点的基础上,是可以还原出类似环境的。
  56. 使用Unity5.6的Look-Dev功能,我们要在互不相同的环境以及时间带中,确认我们开发的服装的材质球颜色到底能展现出怎样的效果。 并且,为了某些特殊的场景,我们需要抠掉IBL材料内部的太阳光。 如果,我们要使用白色标准场景的话,Substance Painter制作场景设置也要按照Unity设置的标准场景信息来修改。
  57. 由于不同的画面角度和IBL素材的曝光度带来的变化我们也要注意观察。
  58. 2015年以后发售的大部分手机硬件都支持PBR。 支持Iphone 5s以上和安卓SDK4.3以上。 Opengl es 2.0 extension中部分机型支持PBR,Tex cube lod( ) , Tex cube bias( ) 这两个在大多数的opengl es 扩展版中都支持。 ddxx , ddyy 大部分是不支持的。 PBR渲染和线性空间渲染、Tone mapping、HDR等都有密切的关系。 结论就是要确保PBR渲染的稳定性的话,推荐使用Opengl es 3.X以上。
  59. 接下来这一部分主要讲优化方案的必要战略和要领。 特别对手游图形学,想设计Shader的工程师和艺术家都是很有帮助的。
  60. 对于IPC这个专业用语,对艺术家们可能会觉得多少有点生疏。 对我们来说,得稍微了解下IPC和ALU等。 希望大家通过百度和谷歌等搜索引擎了解更多的知识。   XT属于中高档,这次出来的XE属于普及型产品。 减小了核心的大小,TDP属于优化好的产品,支持VR、Vulcan、OpenGL等的最新规格。 未来的智能手机渲染还是很值得期待的。 Full HD渲染对HDR部分做了很大的改善,性能相比于6XT,也做了很大的改善。XE作为普及型产品,相信XT的性能也会十分优秀的。 不管怎样,随着ALU改善和编译器改善带来的命令组的快速执行,也是备受瞩目的。
  61. 接下来,来讲讲怎样使用近似值技法,来降低Shader代码的开销。 IPC这个专业术语本身可能对于艺术家来说是比较生疏的。 它作为每一时钟周期指令的执行次数,意思就是每个分支所能执行的指令数。 平常,我们一般会问,有几个Instructor[ɪnˈstrʌktə(r)] 还需要确认使用的指令是在像素Shader中处理的,还是在顶点Shader中处理的。 而且,比起最终用了几个指令来说,我们要关注的是怎样能减少指令,以怎样的方式来减少指令。 还有,根据coding方式的不同,我们要确认汇编代码都否有做好分类。 想象技术公司提供的汇编运作参考论文中也有提到,分好类的汇编代码的运作速度,性能要提高30%以上。 最好要理解计算是怎样转换为汇编来处理的。
  62. 为了进行单元测试,我使用了两种编译器。 使用了2015年生产的Series 6普及型型号和最近发布的Series 8XE普及型型号的编译器。
  63. 上图是非常受限制的特效用菲涅尔公式。
  64. 以上是PCE推定值结果。 编译器的话,使用了Series 6 和 Series8XE。 这是使用普通的pow函数的结果。
  65. 以上是经过近似值处理和优化的结果。 我们可以确认,Per-Line Cycle Estimate【ˈestɪmət】 Total是减少了的。 关于指令优化部分,也希望能从其它部分,以其它不同的方法再去了解一下。 但是,因为考虑到PowerVR编译器的特性,除法不要把实数除法换成整数除法来执行。 因为编译器内部指令已经做了数学公式上的优化,所以可能会产生意料之外的结果。
  66. 接下来,我们来看下关于顶点缓存对象,美术能做什么优化。 简单点理解就是,为了能快速渲染顶点所拥有的信息集合,我们可以把它看成是从客户端的内存,传送以及保存到服务端即GPU内存的对象。 因此,GPU需要快速的从自身的内存获取信息,并且在硬件渲染管线中完成绘制。 我们需要知道顶点缓存的属性信息为什么能最小化的话,要做到最小化呢。 最新的GPU相比于2000年的GPU来说,绘制的速度有了质的飞跃。 不管怎么样,在艺术家层面的话,顶点缓存对象的尺寸还是能减尽量减。
  67. 我们试着罗列了顶点缓存属性信息所拥有的信息。 所有的这些信息作为基本的结构体,从网格开始,构成了整个游戏数据。 我们需要给艺术家提供对这些信息进行压缩的方法。 大部分的艺术家仅仅对三角形的个数有兴趣,如果能理解这一点,对于优化是很有帮助的。 有十年以上工作经验的3D模型师的话,对这方面应该是要了解的,但是知道的人却很少,对于我们亚洲的开发者来说,这一点确实值得引起注意。
  68. 尽可能还是要节省顶点缓存。 接下来我们来看下网格的顶点数量最终会给VBO尺寸带来怎样的变化。
  69. 上图的UV Shell是处于分开的状态,我们可以确认在Unity游戏引擎中计算的顶点数量是增加了的。
  70. 但是,Shell虽然是完全分开的,相邻的UV顶点的坐标如果一样的话,就没有变化。 但是,不存在这种情况。
  71. 在3dsmax中确认的顶点数量是108个。 这和UV Shell的分割完全是没有关系,仅仅是组成网格形态的顶点数量。
  72. 虽然对UV Shell进行了分割,但是顶点数量还是不变的。
  73. 在Unity游戏引擎中进行了确认。 左侧是UV Shell是一个的时候,右侧是UV Shell为两个的时候。 各自分别标记出了顶点数量为114个和120个。 在最近的引擎中,决定是否能够合理地进行三角形绘制的indices[ˈɪndɪsi:z]处理已经毫无压力。
  74. 接下来对手机上发生的法线贴图的Artifact['ɑ:təˌfækt]来做下分析。 打包到手机上的时候,法线贴图的高光部分会产生问题。 首先,如果先确认Shader代码的话,PC上使用的是DXT5nm。但是,在其它平台,对于packednormal.xyz,只做了remap【ri:ˈmæp】 -1 to 1的处理。 实际,我们确认光照模型会发现,Standard shader最终是会进行归一化处理的,但是其它如blinnphong等,是不进行归一化处理的。
  75. 发生如上图所示情况的时候,要先确认几个根本信息。 顶点法线和切线空间法线信息因为进行了线性插值,初期制作的信息中的部分即网格进行了修改,要确认顶点法线的向量是否有发生变更。 这部分如果在Shader里面进行归一化处理的话,大部分能解决。 但是,我们的宗旨还是希望在像素Shader中,能控制因像素法线归一化而产生的开销。
  76. 以IOS为基准,对几种情况做了视觉评价。 有问题的法线贴图,我们已经可以确认,艺术家在Photoshop中,对切线空间信息进行了调整。 然而,在贴图上不管对法线贴图进行怎样的归一化处理,关于PVRTC压缩问题还是无法解决。 虽然,在Shader上进行简单的归一化就能够解决,但是,增加了一个命令语,每次对像素的法线进行归一化的本身是需要很大的运算量的,负担比较大。 最终,把美术加工的贴图以原来的值进行归一化,贴图尺寸变更为原来的一半之后,使用24位真彩色。 因为进行了降阶采样,所以小的细节会有所丢失,但是,实际在4.5英尺,5.5英尺的画面中,那些小的细节,原来就是没有意义的。
  77. 对没有进行归一化的UnpackNormal函数和UnpackNormalDXTnm进行了Per-line Cycle【ˈsaɪkl】的比较。
  78. 以IOS为基准,对三大具有代表性的格式进行了测试比较。 RGB PVRTC 4位,尺寸1024,进行了归一化,容量为0.7兆。RGB ASTC 4*4 block压缩,尺寸1024,进行了归一化,容量为1.3兆。 最后,真彩色24位,尺寸512,不增加命令,容量为0.98兆。 即使增加归一化命令,如果对游戏表现效果没有影响,那就没有问题,但是,如果游戏本身要处理大量的像素Shader运算的话,24位真彩色也是值得考虑一下的。
  79. 我们游戏最终会输出到这么小的一个画面上。 通过USB 3.0,把手机连接到电脑上,如图所示,我们可以把Unity编辑器游戏画面移到手机画面上。 作为双显连接的手机画面分辨率为1920*1080. 所以,大家使用的贴图的分辨率不要太高。 给内存留点带宽是最好的。
  80. 一般安卓手机和iphone都是有Throttling【θ'rɒtlɪŋ】锁的。 单纯的通过帧率调试,为了获取到稳定、精确的信息,除了High Temperature Throttling【ˈtemprətʃə(r)】现象以外,其它游戏测试也是必需的。 因为Throttling是可变比例,触碰错误或者延迟等,是因为Throttling而产生吗?或者特定区域的帧率低下也是因为Throttling而产生吗?这些都需要通过正确的性能分析来确定。 因此,我们要定义严格的评测尺度,性能分析要排除手机发热所带来的干扰。 如上图所示使用风扇,或者使用小冰箱,都是不错的方法。
  81. 沉闷的讲座终于到此结束了。 结论就是,手游画面的开发,暂时还是会以过去PC画面处理经验为基础。 收集哪些信息,怎样灵活使用是很重要的。艺术家怎样使用参考资料也是需要值得探究的。 任何实时处理的开销还是比较大的。 而且,Approximation,即,适当的…近似的…需要对近似值有所了解。 最后,所有的优化都是靠开发者的意志去完成的。 总的下个定义就是积土成山…能节省的东西都要优化。希望各位能铭记这一点。
  82. 再次感谢网易盘古游戏部引擎技术研究中心和工作室所有开发者的支持。
  83. 我们网易盘古游戏部诚邀各领域人才的加入。 渲染、技术美术、3D美术等,我们渴望全领域人才的加入,希望大家把宝贵的简历,投到上面这个邮箱。