Bob Blog

If you want knowledge,you must toil for it.

常见数学公式推导

向量基本计算

图形学中会用到的比较基础的3D数学,重点在线性代数知识。 所有图形均采用GeoGebra绘制。 余弦定理 在三角形中ABC中,已知AB=a,AC=b,CB=c,cd⊥ab, cd=bsinA,bd=a-bcosA。 勾股定理c² = cd² + bd² c² = (bsinA)² + (a-bcosA)² c² = b²sinA² + a² + b²cosA² - 2...

王者荣耀地图资源

随风飘摇的小草

细草微风岸,危樯独夜舟 —— 唐 · 杜甫《旅夜书怀》 吟诗一首,再欣赏一下细草微风渲染效果。 没有录制一个完整循环,抖了一下,附送:Gif录制工具 王者荣耀整个地图植被只用了一张512px的Alpha贴图 一小块草mesh包含了uv和color,这里color是用来控制权重。 把color信息bebug渲染出来(开启下面shader注释color的二行), 可看...

王者荣耀角色光照

角色光照浅析

高光(Specular):模拟有光泽物体表面上的亮点,其颜色更倾向于光的颜色而不是物体表面的颜色。 Blinn-Phong specular 模型 vec3 viewDir; vec3 halfDir = normalize(lightDir + viewDir); //specPower 镜面高光系数 //I为入射光颜色向量,k为镜面反射系数 float spec = I * k...

王者荣耀地图资源

简单分析地表混合

王者荣耀地表用的Terrain Splatting技术,简单说就是合并多层贴图,平滑融合边缘。 这个技术由Charles Bloom发明的,他有一篇文章介绍说明,另外wiki上也有一些基本原理介绍。 整个地表没有用高度图,直接用 分割粒度适中的Mesh 做的,下图是战斗地图右直道,uv是路边缘草(_Splat0),uv2是石块(_Splat1)。colors是用于做二层融合,...

手游反向浅析

简单逆向分析

逆向分析:对一个事物的可能,对其进行反向分析,分解和重构,推理分析某个事物可能。 和演绎法类似 T系所有手游都是用的一套加固方式,先看看官网的介绍, 四大保护功能。 第三项资源apollo组件 游戏资源基于IFS文件构建,不仅可以更新资源还可以增量更新Apk。 游戏启动时可以基于文件列表(ResourcePackerInfoSet.bytes)从资源包中(sgame_r...

王者荣耀资源浅析

简单分析场景贴图制作

王者荣耀国内移动游戏收入榜的第一名,其季度流水超过40亿元。虽然我不爱玩,但是可以分析学习其制作方式。分析文章将形成一个系列:地图、角色、特效、UI等。 1.地图 地表草沙石头alpha融合 河流、河岸波浪、瀑布 粒子特效 出生地建筑模型、pbr使用 地表物件:草的运动(Hair Groom系统),旗帜飘动 2.角色 模型分级low middle h...

Lua元表

介绍元表和class设计

简单介绍Lua元表和class设计 Lua的table是hashmap和array的结合体。如果是key-value访问table中一个不存在元素时,会触发lua的”查找机制”,利用这个特性可以模拟class。 --例1 local char = {} --打印不存在的key:hp print(char.hp) --输出nil getmetatable和setmetatabl...

UGUI浅析

简单分析UGUI和NGUI差异

NGUI由ArenMook开发的是一款收费Unity插件($95),多用于做Unity游戏UI系统。作者曾被Unity招安一年开发了官方版本UI系统UGUI,最终与Unity意见相左离开了,但至今他的NGUI仍然维护中,国内游戏NGUI使用率相对更高一些。UIGUI仅开源部分C#代码,核心代码是未开源,NGUI源码完全可自行优化或扩展。 UGUI Renderer CanvasRe...

计算机图形学集锦

编程和图形学等相关技术资料

草稿,未完待续 语言类 C++ bash 数学类 Linear Algebra graphtoy 渲染库 Vulkan OpenGL API Metal Direct3d 12 Doc 书/教程 Real-Time Rendering, Fourth Edition GPUGems noteForOpenGL Learn Computer Graphics F...

Lua热更新框架差异

方案选型考量方向

闲谈国产游戏脚本渊源 端游时代一款《天龙八部》就支撑了整个畅游公司。它引擎改造于orge+cegui。当c++代码工程随着项目业务日益庞大时,编译速度就实在很令人发狂。而C++对于开发人员要求还是蛮高的,驾驭不好给项目稳定性带来很大风险。再则为了更好分离引擎和业务逻辑,所以引入Lua做脚本语言作了部分业务逻辑开发。包括《魔兽世界》、《大话西游2》也引入Lua脚本。 早期页游大多基于Js+h...