小组

【招聘画师】2D像素RPG游戏企划,有偿招聘画师
曙光工艺工作室 4 小时前 20:55

企划名称:《战争冒险》

游戏类型:像素风RPG游戏

游戏主题:现代战争

合作方式:线上

工作模式:兼职

分配方式:项目分成

游戏介绍:在一个90年代东欧风格的国家里,讲述一个少女在战争中失去家园而流浪冒险的故事,在冒险中她会遇到大兵、慈善家、护士等各种各样的朋友和敌人,剧情量很大(剧本已经创作完毕)

目前我们工作室有一个策划,一个程序员,一个负责画立绘的画师,缺少一位会做像素行走图的画师,诚心招聘一位会画像素行走图的画师加入我们团队,最好能参与到游戏制作过程中去,等到游戏正式发售后,会按照按劳分配的原则分成

有意愿合作的可以申请加入我们工作室的QQ群

QQ群:287307326

验证消息:像素画师Image title

寻有想法的成都程序
小白 7 小时前 17:54

我是3D美术,希望能有所合作,没有也可以交个朋友。

成都独游团队《挣脱》项目,寻求一名美术[成都]
迷物组 7 小时前 17:48

这又是一则招聘启事~


因《挣脱》开发进度原因和团队需求,我们想要再寻找一位美术小伙伴加入并和我们一同前进。


职位描述:

* 2D横板游戏场景美术

职责:

* 制作项目场景,道具,部分特效素材

* 设计剧情特殊氛围,镜头

任职资格:

* 热爱独立游戏

* 能对游戏提出新的设计及融合团队的想法

* 扎实的美术基础,熟悉CG绘画

加分项:

* 理解 SCP基金会世界观 及 新怪谈/旧怪谈风格 且对科幻感兴趣

* 擅长用画面讲故事

* 有解谜类,横板2d游戏开发经验

* 表达逻辑清晰


联系方式:

QQ:88349625 或 将您的作品集及简历发送到邮箱Chu@Miwuzu.com


我们是迷物组,一家坐落在成都的独立游戏团队,团队秉承创造为上的理念,团队内部气氛和谐。有想法随时可以提出,如果有点子能让所有人感兴趣,我们愿意为这个点子新开一个项目并全力做出来。我们相信,创造性本身就是具有极高价值的,而能和大家一起提出点子的人更是我们最需要的。欢迎前来和我们聊聊。

成都独游团队《挣脱》项目,寻求一名美术[成都]
迷物组 7 小时前 17:47

这又是一则招聘启事~

因《挣脱》开发进度原因和团队需求,我们想要再寻找一位美术小伙伴加入并和我们一同前进。


职位描述:

* 2D横板游戏场景美术

职责:

* 制作项目场景,道具,部分特效素材

* 设计剧情特殊氛围,镜头

任职资格:

* 热爱独立游戏

* 能对游戏提出新的设计及融合团队的想法

* 扎实的美术基础,熟悉CG绘画


加分项:

* 理解 SCP基金会世界观 及 新怪谈/旧怪谈风格 且对科幻感兴趣

* 擅长用画面讲故事

* 有解谜类,横板2d游戏开发经验

* 表达逻辑清晰


联系方式:

QQ:88349625 或 将您的作品集及简历发送到邮箱Chu@Miwuzu.com


我们是迷物组,一家坐落在成都的独立游戏团队,团队秉承创造为上的理念,团队内部气氛和谐。有想法随时可以提出,如果有点子能让所有人感兴趣,我们愿意为这个点子新开一个项目并全力做出来。我们相信,创造性本身就是具有极高价值的,而能和大家一起提出点子的人更是我们最需要的。欢迎前来和我们聊聊。

成都独游团队《挣脱》项目,寻求一名美术[成都]
迷物组 7 小时前 17:45

这又是一则招聘启事~

因《挣脱》开发进度原因和团队需求,我们想要再寻找一位美术小伙伴加入并和我们一同前进。


职位描述:

* 2D横板游戏场景美术

职责:

* 制作项目场景,道具,部分特效素材

* 设计剧情特殊氛围,镜头

任职资格:

* 热爱独立游戏

* 能对游戏提出新的设计及融合团队的想法

* 扎实的美术基础,熟悉CG绘画

加分项:

* 理解 SCP基金会世界观 及 新怪谈/旧怪谈风格 且对科幻感兴趣

* 擅长用画面讲故事

* 有解谜类,横板2d游戏开发经验

* 表达逻辑清晰


联系方式:

QQ:88349625 或 将您的作品集及简历发送到邮箱Chu@Miwuzu.com


我们是迷物组,一家坐落在成都的独立游戏团队,团队秉承创造为上的理念,团队内部气氛和谐。有想法随时可以提出,如果有点子能让所有人感兴趣,我们愿意为这个点子新开一个项目并全力做出来。我们相信,创造性本身就是具有极高价值的,而能和大家一起提出点子的人更是我们最需要的。欢迎前来和我们聊聊。

大厂出身游戏市场&运营,擅长各类运营工作,可合作
脆皮五花肉 前天 10-27 18:45

目前工作比较闲,热爱游戏,对游戏非常感兴趣,可以做社群运营&用户运营&内容产出&视频剪辑,包括发行渠道市场都会,之前有多款游戏经验,需要运营&市场的团队可以兼职合作,我也想多学一些东西,具体报酬可以详聊

Q:450777632

2048*3消
bailt 前天 10-27 15:52

3*3棋盘

初始时一个棋子(开始游戏时在棋盘上随机生成一枚棋子)

当移动时在空的棋格上生成一个棋子

所有的棋子会随着同一个方向移动

当棋子在连续横排、竖排三个同一类型,清除,获得分数

棋子类型三种

没有胜利

好像没有意义

有扬州的小伙伴组队吗?
shanhaobo 前天 10-27 14:55

本人是上班族,业余时间做游戏,来个小伙伴一起来组个队啊,最好同城的。

最近大家在玩什么游戏呀?
sdj大傻 前天 10-27 14:11

我发现买游戏比玩游戏好玩,就是我不配这个爱好。。。

八方旅人类的2.5D像素风JRPG类游戏项目组招各路人才
ZIYUTANG 大前天 10-26 16:31

目前有2D角色美术,原画,2D场景美术 和 3D场景美术,TA向的U3D特效在招。

项目刚启动,大致框架和模块,风格以及核心玩法已经敲定。

坐标北京,接下来有线下办公场所。

同时接受兼职,合作,和全职等多种方式。

目前需要完成DEMO级产品。发行和推广资源优质,作为独立游戏而言,资金的储备也比较充裕。

我们的目标指在还原原汁原味的JRPG游戏。有同样想法的小伙伴可以微信联系:TANGZIYUSHEN。

本条招募广告长期有效。其他工种类型的小伙伴也可以私信我。

上海鹰角网络内推-技术策划/3D动画师/3D模型师/TA向U3D特效,有感兴趣的小伙伴吗~
MidoriMint 2021-10-22

目前有技术策划/3D动画师/3D模型师/TA向U3D特效岗位在招,特别欢迎有独立游戏开发经验的同学,有兴趣的同学可以发简历到 tanxinlv@hypergryph.com,记得在邮件标题里写上indienova哦~

技术策划

岗位职责:

1.编写工具扩展,设计和优化游戏开发工作流程;

2.运用Unity引擎以及合适的辅助工具,编写一定的脚本,实现策划的玩法设计需求。


职位要求:

1.本科及以上学历,3年以上游戏设计或开发经验。熟练掌握游戏的开发工具,了解游戏开发工作流程的各个管线,并能深入理解和分析各个相关工具的优缺点;

2.熟练掌握至少一门编程语言,能够在引擎中编写脚本实现简单的游戏机制;

3.熟练掌握视觉脚本工具,熟悉状态机、行为树等概念;

4.有丰富的单机游戏经历;

5.乐于学习和探索,有较强的自我驱动力;

6.良好的沟通能力和团队合作精神,责任心强。能够即时关注项目的实际需求和实际问题并付诸实践去解决。


加分项:

使用成熟引擎工具或MOD工具独立完成过游戏作品;能够熟练编辑行为树AI。

————————————————————————————————

3D模型师

【工作职责】

1、迅速领悟游戏风格,并制作该风格的3D人物模型。

2、游戏中的一部分物件与场景模型制作。

3、积极与主美及技术美术沟通,充分理解需求并执行。


【任职要求】

1、本科及以上美术相关专业毕业,美术功底扎实。

2、1年以上高品质3D角色或场景模型制作工作经验。

3、熟练使用MAYA或Blender建模,绑定骨骼。

4、熟练掌握Substance Painter绘制贴图。

5、对艺术风格有一定理解与研究。

6、有较强的沟通协作能力,适应快速迭代的开发节奏,接受创新性挑战。


【加分项】

1、熟练运用Substance Designer制作材质。

2、对资源优化较为敏感。

3、能独立完成基本的人物动作动画。

4、具有参加Game Jam并完成可玩原型的经验。

————————————————————————————————

3D动画师(Blender)

岗位职责:

 与战斗策划紧密沟通,根据需求使用 Blender 或 MAYA 制作动作游戏的角色动画,为玩家呈现操作反馈、打击感和敌人的攻击预警。

 

任职要求:

1.    动画相关专业毕业,3年以上动画工作经验,具有游戏项目经验,具备良好的动画设计基础;

2.    熟练掌握和运用动画基本原理, 精通角色动画和物体运动,善于运用动作来准确塑造角色特征;

3.    富有创造力,能独立设计并制作符合游戏风格的角色动画;

4.    熟悉Unity引擎或相似游戏引擎, 能够熟练运用MAYA或Blender制作符合规格的游戏动画;

5.    具有较强的自学能力和适应能力,乐于探索和尝试新的制作方法并能够运用到项目中,能够积极主动地提出自己的意见;

6.    对游戏行业富有热情,具有良好的沟通能力与团队合作精神,学习能力强,责任心强。

 

加分项:

热爱动作游戏,通关过至少一款主流3A 动作游戏。

————————————————————————————————

U3D特效师(偏TA)


岗位职责        

1.运用Unity引擎和相关工具制作游戏中的动态特效;

2.运用Unity引擎实现美术对游戏中材质和特殊渲染效果的需求


任职需求        

1.较好的图形学基础,熟悉游戏的渲染管线,精通3D美术内容制作工具和素材规范;

2.较好的美术专业能力,较高的审美能力,根据游戏的风格设计合适的动态特效;

3.能够将设计的效果付诸实践,独立准备或制作用于展示渲染效果所需的素材;

4.熟悉游戏动画规范,会制作角色的骨骼绑定和蒙皮;

5.熟悉Unity引擎的渲染模块,能够将制作的效果完整呈现在Unity引擎中;

6.有较强的沟通能力,能够理解美术的需求并实现材质和特殊渲染效果;

7.有较强的自我驱动力,乐于探索和尝试新方法;

8.良好的团队合作精神,责任心强。


加分项:

1.熟悉渲染技巧和着色器编程,优化实时渲染性能;

2.熟练掌握一门编程语言,能够编写内容制作工具的扩展。


独立游戏合作(缺美术)
Dmilktea 2021-10-22

我做了一年半的galgame,原计划是序章+5个章节,结果现在做到第3章节没钱再外包美术,想找个愿意享受上架分成和长期合作的小伙伴(后续还将制作RPG游戏),如果愿意来的话3~6个月后游戏就能上架steam。有意者回复(有demo)

独立游戏合作(缺美术)
Dmilktea 2021-10-22

我做了一年半的galgame,原计划是序章+5个章节,结果现在做到第3章节没钱再外包美术,想找个愿意享受上架分成和长期合作的小伙伴(后续还将制作RPG游戏),如果愿意来的话3~6个月后游戏就能上架steam。有意者回复(有demo)

鹰角内推-游戏客户端工程师(新项目)
superyiyi11 2021-10-22

目前有新项目诚招游戏客户端,经验3年以上,希望有独立游戏经验,有兴趣的小伙伴欢迎投递:yining@hypergryph.com

游戏客户端工程师

岗位职责:

1. 负责游戏中核心模块设计及实现;

2. 负责游戏内容相关编辑器及工具开发;

3. 根据需求分析并设计出合适的解决方案;

4. 持续优化游戏的视觉体验和性能参数。

任职要求:

1. 本科及以上学历,计算机相关专业优先;

2. 3年以上Unity3D相关实际开发经验,有独立游戏开发经验优先;

3. 通过CET-6,具有良好的英文读写能力,能熟练使用搜索引擎查找阅读英文资料;

4. 良好的面向对象设计、分析能力,规范的编程风格,有游戏编辑器相关开发经验;

5. 有扎实的编程基础和算法基础;

6. 热爱游戏,善于沟通,有责任心和团队合作意识。

鹰角内推-游戏客户端工程师(新项目)
superyiyi11 2021-10-22

目前有新项目诚招游戏客户端,经验3年以上,希望有独立游戏经验,有兴趣的小伙伴欢迎投递:yining@hypergryph.com

游戏客户端工程师

岗位职责:

1. 负责游戏中核心模块设计及实现;

2. 负责游戏内容相关编辑器及工具开发;

3. 根据需求分析并设计出合适的解决方案;

4. 持续优化游戏的视觉体验和性能参数。

任职要求:

1. 本科及以上学历,计算机相关专业优先;

2. 3年以上Unity3D相关实际开发经验,有独立游戏开发经验优先;

3. 通过CET-6,具有良好的英文读写能力,能熟练使用搜索引擎查找阅读英文资料;

4. 良好的面向对象设计、分析能力,规范的编程风格,有游戏编辑器相关开发经验;

5. 有扎实的编程基础和算法基础;

6. 热爱游戏,善于沟通,有责任心和团队合作意识。

Cocos Creator次世代人物渲染实战:皮肤篇
CocosEngine 2021-10-22

无论何等类型或规模,人物渲染都是项目中难以替代的重要组成部分。

有趣的是,对比世间万物,我们理应对自己的身体更加熟悉,然而远自文艺复兴以来,无论在美术层面还是技术层面,人物渲染一直是一个令人挠头的痒点——即便是从真人模特身上以尖端仪器扫描,并赋予极高贴图精度的加持下,我们依然时常难以摆脱“恐怖谷”的困扰。那么,有什么“奇技淫巧”,能够让我们在Cocos Creator中更容易地产出可信的人物渲染效果?

让我们今天从皮肤说起。


确立目标

我们将在Cocos Effect中编写一个次表面散射着色器,用于表现人物渲染中的皮肤材质效果。Cocos Creator已经自带了标准Metal/Roughness流程的PBR 着色器,我们将在此基础上增加新的GLSL代码,这样既可以使用所有Metal/Roughness流程的PBR功能和特性,同时也兼备次表面散射的效果呈现。

所谓次表面散射,最直观的视觉观感是:物体内部自发光由内而外把物体照亮了,因此使用我们的着色器除了可以配合环境制作写实的次表面散射效果之外,在特定数值的配合下,还可以产生更特别、更戏剧化的效果:

Image title

我们的着色器将配合两张新贴图Thickness和Curvature使用。这两个名词对于美术,尤其是角色美术的同学,想必是不陌生了。同时,我们会附加上菲涅尔反射的功能,在PBR反射算法的基础上赋予更灵活的调节选项。最后,我们会赋予一个Diffuse Profile功能,其细节会在后文详说。目前我们只需要知道它是一个随数值调节颜色输出的功能。

那么,Cocos Effect又如何使用呢?


快速上手

Cocos Effect是Cocos Creator存储着色器的一种格式,它使用YAML编写。Cocos Effect将顶点着色器、片元着色器和编辑器中的参数整合在一个文件中,并且会根据目标平台不同转换为不同版本的OpenGL ES Shader。YAML只传输数据,它本身不包含逻辑,毕竟YAML的全称是“YAML Ain't a Markup Language” (YAML不是一种标记语言),真正表达逻辑的还是GLSL顶点和片元着色器。

Cocos Effect的详细信息何以从这个文档中获得,以Cocos Creator内置的标准PBR 着色器为例,我们可以参考以下的信息,快速开始编写自己的着色器:

  • 所有顶点着色器代码需要在“CCProgram standard-vs”标签下用GLSL编写,同时也可以使用Cocos Creator内置的Shader参数,具体的列表可以在这里获得;
  • Image title
  • 类似的,所有的片元着色器代码需要在“CCProgram standard-fs”标签下用GLSL编写;
  • Image title
  • 自定义参数需要在“properties”标签下声明,在“properties”标签下声明的变量都会在Cocos Creator内的编辑面板中出现;
  • Image title
  • 我们需要为新声明的参数声明一个相应的uniform,这需要在“CCProgram shared-ubo”标签下实现,声明的uniform无论顶点着色器还是片元着色器都可以访问;

Image title

我们也可以声明自定义函数,但是记得:YAML是不包含逻辑的。所以自定义函数应该放在顶点着色器(“CCProgram standard-vs”)或者片元着色器(“CCProgram standard-fs”)之内。


奠定理论

首先,我们需要解答一个问题:什么样的效果能够让皮肤更真实?

我们可以从现实生活中找到一些参考:

Image title

观察上图,首先你可能会注意到的是:他的耳朵是红色的。而且在结构越陡峭、线条越坚硬的部分,红色显得更加浓艳。另外,在他的鼻梁明暗交界线的部分,也可以看到一条红色聚集的色带。

Image title

在上图中,我们同样能够在鼻梁的明暗交界线上观察到红色的色带,她的鼻梁的线条并不是特别陡峭,因此色带似乎也比上一个例子更宽一些。

Image title

在这个例子中,我们同样可以观察到红色聚集的部分,不过在她的脸上,红色聚集在鼻翼和鼻尖的位置。

Image title

而在这个例子当中,我们可以在他的脸颊明暗交界线的位置看到大面积的粉红色聚集(至于为什么是粉红色,是因为这张照片在后期调色中混入了冷色调的缘故)。而这种粉红色在他鼻梁线条锋利的部分同样可以看到。

综合起来,我们似乎可以观察到一定的规律:

  • 人的皮肤在明暗交接线的部分,会出现红色聚集;
  • 红色聚集在人脸结构陡峭,线条锋利的部分,会更明显和鲜艳;
  • 耳朵、鼻尖、鼻翼等区域是红色聚集常见的地方。

  • 那么,为什么会出现这种现象?这些红色是从何而来的?

Image title

我们知道,当光线从一种介质(A)射入另一种介质(B)时,一部分光线被介质B吸收,另一部分在介质B中经过多次反射和折射,最终一部分光线从介质B折返重新射入介质A中。而这些在介质B中经过反复反射折射而重新回到介质A的光线被人眼所捕捉到,所以人眼可以观察到介质B的颜色。这些光线虽然原理上属于反射光线(Specular),但实际表现的是散射(Diffuse)的特质,所以被称为漫反射(Diffuse Reflectance)光线

你大概已经注意到:当漫反射光线经过在介质B中的种种流程,重新射入介质A时,距离原来射入介质B的入射点已经有了一段距离。对于绝大多数材质来说,这个距离非常微小,完全可以忽略不记,所以我们可以理解为漫反射光线是由原入射点射出的。

Image title

然而对一小部分材质来说,这个距离就不能忽略了。当光线射入时,这类材质会表现一种透光的特质,仿佛物体内部自带光源,把物体从内部照亮了。自然界中有很多有机材质会表现这种特质,比如蜂蜡、树叶、果蔬等,当然也包括人的皮肤。

这种特别的散射特质,即被称为次表面散射(Sub-surface Scattering)。

Image title


原理似乎挺简单,但我们应该如何实现呢?

在计算机图形学的历史上,我们可以找到多种多样表现次表面散射的技巧和手法。其中一个较早的例子来自与电影《黑客帝国》(The Matrix)。特效人员发现,可以简单地对皮肤的Diffuse贴图做一次模糊,再叠加到原贴图上,就可以有效降低贴图的人工质感,做出光线在表皮下散射的效果。

而对于明暗交界线上的红色堆积,你大概已经想到可以轻松利用“N·L”方法,通过光照方向和物体表面法线计算得明暗交界线的位置,再叠加以一个颜色即可。这种方法也被称为Wrap Lighting方法,在经典游戏《半衰期2》(Half-life 2)中广泛应用。

而与“N·L”非常类似的“N·V”方法,可以通过摄像机方向和物体表面法线得到物体正对摄像机观察角度的部分,这可以帮助我们轻松获得菲涅尔(Fresnel)反射的效果。

讲到这里,我们的目标已经比较明确了:

  • 我们需要一个模糊,用于达到Diffuse贴图的漫反射效果;
  • 我们需要一张Thickness贴图和一张Curvature贴图,帮助我们识别物体那些部位容易出现次表面散射;
  • 我们需要一个菲涅尔反射效果,这将帮助我们实现皮肤的Specular部分;
  • 最后,我们需要一个Diffuse Profile,这将帮助我们确定次表面散射的强度和颜色。

实现模糊效果

如何实现模糊的效果?其背后的逻辑其实很简单:我们只要把需要被模糊的图像的UV向各个方向偏移一点距离,把所有偏移的结果相加,求一个平均值即可:

Image title


在上面的示例代码中,“v_uv”是Vertex Shader传递的UV数据,我们基于Cocos Creator的内置PBR 着色器编写我们的Shader,所以有很多准备工作已经做好了,我们直接拿来用即可。“SRGBToLinear”是Cocos Creator内置函数,将sRGB空间的颜色数据转换为线性空间,在PBR流程当中,所有的颜色计算需要在线性空间中进行。

当然,仅仅做一次平均值的计算,最终效果可能不是特别好。你也可以用同样的方法循环2-3次,以获得更细腻的效果:

Image title


这种单刀直入的模糊方式,称之为方形模糊(Box Blur),其特点就是所有像素一视同仁,被处于同样等级的模糊处理。虽然简洁明了效率高,但视觉上不一定是我们想要的。

如果你用过Adobe系列的图像处理工具,你一定很熟悉最常用的模糊工具“高斯模糊”(Gaussian Blur)。高斯模糊的逻辑与方形模糊一脉相承,不同的是:像素偏移的距离越大,模糊的程度越高,反之则越小,而模糊程度的权重则呈正态分布排列。这样我们得到的结果中间模糊程度低,四周模糊程度高,并且呈现出一种从中间向四周自然衰减的效果。

用代码从头实现一个正态分布函数,似乎还是太麻烦了。所幸的是,我们只需要几个呈正态分布的数值作为我们模糊的权重,直接代入我们的方形模糊函数当中即可,网上有诸多正态分布数值生成器可供挑选。

Image title


探索Diffuse Profile

让我们回到之前观察到的明暗交界线上的红色聚集上面。我们已经想到可以用“N·L”+ 颜色叠加的方法实现这种效果,但这里有一个问题:这里的红色是常量的红色吗?

让我们来看一个实验:有一个呈现次表面散射的球体,被单一光源照射。光源的位置和强度不变,放大和缩小球体的大小,观察次表面散射颜色的变化。

Image title

结果略微出乎意料:在球体极大和极小的情况下,散射颜色较深,近乎于纯黑色;随着球体的缩放接近于极大和极小之间的一个范围,散射的颜色逐渐变得明亮和鲜艳,直到达到一个峰值。

这似乎告诉我们:次表面散射的颜色变化也遵循一条钟形曲线(正态分布曲线),在某个临界点达到峰值,向两边递减。

那么,这个临界点是由什么决定的呢?这就取决于我们如何理解实验中球体大小的变化。

首先,在光源位置不变的情况下,球体的大小变化,意味着光线到达球体表面传播的距离变化,也就是说,光线传播的距离是因素之一。

另外,一个半径较大的球体,可以看作其表面的曲率(Curvature)也更大,反之则更小。一个半径无限小的球体,表面的曲率也无限小,可以看作是一个平面。也就是说,物体表面的曲率,即弯曲的程度,也是因素之一。这也于我们之前在观察参考图中得到的结论相契合。

理论很美好,但是我们如何实现呢?

所幸的是,我们已经有基于现实观测的皮肤次表面散射数据供我们使用:

Image title

Image title


这张表看上去有点不明觉厉,简单地说:我们所观察到的皮肤上的红色,其实是皮肤的不同截层以不同的颜色和强度曲线分别进行散射,再叠加而成。这张表列举了六层不同的颜色和曲线。而所有截层的散射强度都以正态分布排列,所以我们可以在右图看到自然衰减的晕染。

既然数据已经给到我们了,我们就可以根据正态分布公式,计算出散射强度,在叠加以颜色,散射的最终输出就解决了。

Image title


上图即是正态分布(高斯分布)公式,简单地说:μ为中位数,在我们的计算中也就是散射颜色变化的峰值,我们知道它由光线传播的距离和物体表面的曲度相关,目前可以取0;σ^2为方差,它决定了钟形曲线的陡峭程度,这个数值已经为我们提供了。由此,我们可以直接带入公式:

Image title


到目前为止,我们已经得到了实现Diffuse散射效果的模糊,得到了解决次表面散射颜色和强度的Diffuse Profile,现在的问题是:次表面散射应该出现在哪里?

在这里我们需要引入两张贴图:Thickness和Curvature。Thickness通过以法线反方向发射射线的方式计算物体的厚度,Curvature表现的是物体表面的曲率。这两张图,我们无需考虑如何在引擎中计算和生成,因为我们可以在第三方软件,比如Substance Painter中离线渲染他们。

Image title

获得烘焙完成的贴图之后,我们把Curvature放在一边,先处理Thickness。

Image title


我们先用之前的高斯模糊处理Thickness,再用原贴图减去被模糊后的Thickness贴图。回忆一下高斯模糊的原理,我们得到的结果是:模糊后偏离较小的像素被减去了,留下的是偏离较大的像素。这些Δ值可以作为我们次表面散射的遮罩。

我们仍缺的一环是菲涅尔反射。如上所述,我们可以使用“N·V”方法实现这一效果。

Image title



在上面的示例代码中,“cc_matView”是Cocos Creator自带参数,返回的是试图矩阵。“v_normal”是从Vertex Shader传递的法线数据。

所有组件已经基本就绪了,下面是让他们联动起来的环节。


完成Shader

漫反射效果,用我们的模糊处理一下Diffuse贴图,叠加到Albedo通道即可。

Image title

菲涅尔反射的效果,用我们“N·V”计算得出的权重,乘以一个自定义参数,叠加到roughness通道即可。

Image title

漫反射的颜色,我们已经得到了Diffuse Profile的函数,问题是:用什么参数带入这个函数?

我们已经知道光线传播的距离和物体表面的曲率是影响次表面散射的因素。光传播的距离似乎比较难把控,但我们至少知道物体本身的前后关系也算在光传播的距离当中,因此代入顶点位置数据(v_position)是顺理成章的。

至于物体表面的曲率,我们并不知道曲率与次表面散射的直接数值关系,但我们通过观察实验得知:曲率与次表面散射强度大致呈线性关系,因此我们姑且把曲率(由Curvature贴图提供)当作一般的数值权重,再辅以我们自定义的权重加以调节。

除了Diffuse Profile的输出之外,我们还可以利用Cocos Creator内置的cc_mainLitColor参数,在散射中加入光源颜色和强度的影响。

最后,在颜色输出上再叠加上物体自身的Diffuse颜色,就基本确立了次表面散射的颜色和强度。

Image title

然而,问题又出现了:次表面散射该从哪个通道输出?

Cocos Creator遵循标准PBR的Metal/Roughness流程,因而默认Pipeline中并没有Translucency通道,但这并不会对我们造成太大影响:我们可以利用Emissive通道达到相同的效果。

下一个问题是:次表面散射应该在哪里出现?

我们知道次表面散射的成因是入射光线在物体内部反射和折射而产生内部发光现象,所以我们的第一步是计算“N·L”,利用我们已得到的Thickness Δ值,我们可以得到一个明面为0,暗面为Thickness的遮罩。这也符合次表面散射的原理:光线从明面射入,所以我们可以从暗面观察到次表面散射现象。

最后,利用遮罩将次表面散射颜色叠加到暗面上。我们的效果就已经出来了。

Image title

次表面散射确实是一个经久不衰的话题。毫无疑问,我们今天的成果还有许多可以纠正、改进和继续发掘的地方。希望你读到这里,已经激发了一些奇思妙想,开始动手制作属于自己的Cocos Creator 着色器了。

(转发自:原日志地址

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册