关于MME的编写K佬写了很好的教程,一共三集,每集都比较短,还有一些专栏。
https://www.bilibili.com/video/BV17W411n7g5
作为MME的入门实际上还是有一定难度的,因为有关渲染的编程的背后,不仅包含一大堆的数学原理,还包含很多方面,需要相当多的知识储备。而我本人非计算机相关专业,仅是个人自学,写这篇文章的目的,也就是做个总结的笔记吧。
【资料图】
DirectX 9与HLSL(High Level Shading Language)
MMD基于 DirectX 9开发,对于渲染的自由度非常低。 MME是在此基础上对于 MMD所进行的二次开发,并以插件的形式存在。
为了使用DirectX 9的特性,用户必须学习 HLSL,即高级着色器语言。这是一门由微软开发的、与 C语言语法颇为相似的着色器语言。 HLSL有多个版本,具体取决于可用的功能,但MME支持HLSL直到Shader Model 3.0(因为MMD在DirectX 9.0c上运行)。
DX9这个版本目前来说算是比较落后吧(2023年),没有几何着色器,也没有计算着色器,没有曲面细分等等。要学习的内容较少,所以相对来说算是比较容易。
HLSL 的基本语法
HLSL 的基本语法与 C/C++ 相同,但它具有适合编写图形程序的专用向量、矩阵类型和函数。 一些数学函数类似于 C/C++ 标准库中的函数。
编写工具
关于MME的fx文件编写,可以用记事本(但不推荐),可以使用notepad++,但是想要支持代码高亮和提示功能,需要自行配置一下语言库。也可以使用Visual Studio Code或者2019等等。fx不能自行运行,它是从DirectX调用的。FX本身并不控制绘图过程,而是主机程序(即MME)的作用命令“做这个”和“画这个”。
(另外的一些:可以使用NVIDIA FX Composer辅助学习。FX Composer是一个免费的工具,可以直接从NVIDIA的官方开发者中心下载。FX Composer的最新版本是2.5,官方已经不在提供更新。总的来说,这是一个非常过时的工具了……
作者在原书中给出的解释:NVIDIA FX Composer已经不再提供更新开发支持,并且开始变得有些老旧。它仅支持DirectX 9和DirectX 10,并不支持DirectX 11。同样,AMD提供的shader编写工具——RenderMonkey,也不再支持DirectX 11,对这个工具的开发也已经停止。)
(题外话,记不清是哪一个作者,似乎是针金,他好像使用RenderMonkey来写fx文件,因为某一次某一个fx文件里我看到过RenderMonkey的一些相关)
注意:FX Composer中编写的效果文件并不能直接在MME中实现。只能说可以用来辅助学习。
HLSL的教学视频,教程已经非常老旧,但是里面的数学原理和过程依旧值得学习和参考,通过这个可以对整个流程有很清晰的认知。
https://www.bilibili.com/video/BV1pZ4y1k7dr
当然,这一部分只是选择性地了解。
渲染流水线
渲染管线也称渲染流水线,可以将其理解为一个流程。管线的主要功能是在给定一个虚拟相机、 三维物体、光源等等的情况下生成或渲染二维图像。这个工作时CPU和GPU共同完成的。
渲染流程主要分为几个大的阶段:应用阶段,几何阶段,光栅化阶段,像素处理阶段。
这些阶段中的每个阶段本身也可以是一条管线。管线的各阶段是并行执行的,每个阶段都取决于上一阶段的结果。理想情况下,将非管线系统划分为 n 个管线阶段,可以使速度提高 n 倍。因此提升性能是使用管线的主要原因。
应用阶段(application)
渲染流水线的起点是CPU,即应用阶段。这个阶段是我们自己主导的,通常由CPU负责实现。
需要准备场景的基本数据,渲染的物体、光源的数据、摄像机的数据、一些全局性的数据,准备好这些需要渲染的场景对象之后,我们还要做一些优化,比如算法上的加速,或者说剔除。接着设置渲染状态,准备渲染参数,绘制的顺序。
设置好渲染状态和参数以后,CPU把渲染数据输出到显存去交给GPU处理。
几何阶段(geometry processing)
几何处理阶段(geometry processing),此阶段会处理变换,投影以及所有其他类型的几何处理。这一阶段在CPU上进行。可以理解为GPU的工作环节。另外,此阶段会计算所需要绘制的内容,并判断应如何绘制以及应在何处绘制。
几何阶段进一步分为以下功能阶段(functional stages):顶点着色(vertex shading),投影(projection),裁剪(clipping)和屏幕映射(screen mapping)
光栅化阶段(rasterization)
光栅化阶段(rasterization)通常会依次将三个顶点输入,形成三角形,然后找到该三角形内所有需要计算的像素,将它们发送到下一个阶段。(光栅化阶段好像是不可编程,但可配置的,在此并不多赘述)关于光栅化阶段,我们以后可能要去解决锯齿相关的问题。
像素处理阶段(pixel processing)
像素处理阶段的目标是计算每个可见图元中每个像素的颜色与隐藏面剔除。
怎么感觉写了很长时间了却还没写到入门,本篇若是再塞入语法和范例恐怕就会变得太长了……所以,本文都是些大的概述,算是理论基础的小铺垫吧。在后续的几篇,我们细化深入了解。我们需要了解更多详细的过程,才能去写代码。
我们实际上去编写的,是几何阶段的顶点着色器和光栅化阶段后的像素着色器。(像素着色器也可以成为片段着色器,有些地方会翻译为片段)
顶点着色器:顶点着色器计算对象每个顶点的屏幕坐标。顶点着色器基于每个顶点执行,输入是对象的顶点信息(通过骨骼变形转换后),输出是传递给顶点屏幕坐标 + 像素着色器的顶点信息。
像素着色器:像素着色器计算屏幕上展开的对象的每个像素的颜色。像素着色器基于每个像素运行,其中输入是从顶点着色器传递的顶点信息,输出是像素的颜色信息。
本文至此仅是一些简单认识,作为开篇,并不急于直接入手写代码,主要是树立大的框架,列举了一些可供学习的文章地址。另外,推荐观看图形学GAMES101的课程,闫令琪老师的课,可以在哔哩哔哩上免费看。
附上舞力介入和光束人p的文章地址和另一篇mme介绍博客,作为mme的学习非常有帮助
MikuMikuEffectで学ぶHLSL入門(日文,需注册才能看)
https://codezine.jp/article/corner/426
mme初级介绍(日文)
https://higeninjin.blog.fc2.com/blog-entry-5.html
推荐一个hlsl的基础学习,虽然文章作者是在ue4中实现的,但其逻辑运算等实际上是相通的
HLSL语言基础 https://zhuanlan.zhihu.com/p/52845899
还有就是微软官方的HLSL学习文档,我这里放的是中文版的地址,机器翻译有很多地方不对,所以建议还是看英文版的。
https://learn.microsoft.com/zh-cn/windows/win32/direct3dhlsl/dx-graphics-hlsl?redirectedfrom=MSDN
英文版
https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-pguide
ビームマンP和MME
実は著者は、MMEに触れるまでHLSLに関してほとんど素人でした。ニコニコ動画でMMEを使った動画を見て、「これを使えばカッコいいミサイルやビームが出せるのでは!?」と手を出したのがきっかけです。
好きこそ物の上手なれ、とことわざにもあるように、何事も嫌々では上達は望めません。本来MMDは動画を書き出すことを目的としたソフトなので、せっかく使うのならば動画を書き出して動画サイトに投稿してみましょう。新しい楽しみが発見できるかもしれません。
实际上,作者在接触MME之前几乎是HLSL的业余爱好者。 当我在Nico Nico 上看到使用MME的视频时,我想,“也许我可以用它来生产很酷的导弹和光束!?
俗话说,喜欢就擅长,什么都做不了就不能指望进步。 最初,MMD是用于导出视频的软件,因此如果您想使用它,请导出视频并将其发布在视频网站上。 您可能会发现新的乐趣。
参考
MME中文参考手册 译者 不吃鱼的喵酱
【中文字幕】HLSL着色器入门 https://www.bilibili.com/video/BV1pZ4y1k7dr
实时渲染(第四版)Real-Time Rendering (Fourth Edition)第2章 图形渲染管线https://blog.csdn.net/qq_27534999/article/details/103148234
【DirectX11】第三篇 编写Shader?——还是先了解下工具吧https://blog.csdn.net/xueyedie1234/article/details/51354458
TA成长之路https://www.yuque.com/u12120868/md8ze7/ovoxxl
HLSL参考 https://docs.microsoft.com/zh-cn/windows/win32/direct3dhlsl/dx-graphics-hlsl-reference
从零开始学习MME的HLSL编程(1)https://www.bilibili.com/read/cv263176
关于MMD的各种光照的基础原理 https://www.bilibili.com/read/cv308272
标签: SHADER 实时渲染 机器翻译 非计算机 HTTPS 绘图过程 DIRECTX 基础学习 Visual Studio Code 书き出す NVIDIA 成长之路 业余爱好 中文字幕 最新版本 教学视频 哔哩哔哩 从零开始 总的来说 视频网站
- MME编写入门(一)·渲染流水线、认识HLSL|即时看
- 【P站美图推荐】#81 精选美图# #p站精选壁纸 #p站排行榜 #美少女 #二次元 #泳装 热文
- 鄱阳湖又枯了!再次跌破8米极枯线-每日看点
- 世界信息:六省份普查收集一批珍稀农作物种质资源
- 焦点速讯:有留守儿童为打游戏5天5夜不睡觉 手机沉迷催生乡村“新问题少年”
- 河南项城:“母亲河”成了“风景河”
- 环球快报:天津市肿瘤医院互联网医院——患者宅在家 服务送上门
- 全球速读:茶颜悦色回应满杯奶茶放久变半杯:奶沫放久了会自己消掉
- 焦点快播:老汉为自己办“葬礼”:办完挺满意,看看自己死后的场景
- 浮山有福了,浮山有赋了!|世界热点
- 【世界速看料】多家医院被投诉“反向抹零” 要承担何种责任?
- 【环球速看料】第二届长江大保护司法论坛 将于11月在汉举办
- 当前速看:共青希望小学 :弘扬雷锋精神 争做时代新人
- 医药板块回暖,创新药指ETF(159858)、医疗产业ETF(159877)携手上扬
- 央媒点赞仙桃“拔河式”救援 全网关注过亿 点赞近200万|今日热门
- 扬尘源头精准管控 成都青羊文家社区在行动
- 天天热点!光谷空轨开始试车
- 川浙文旅合作新成果 浙江首航旅游包机昨日来川
- 动态焦点:新冠康复8周后还在咳,怎么治?中医支招——
- 热线追踪|望京西园四区社区小门变整洁,居民出行路畅通了
- 环球时讯:农发行玉田县支行开展冬春消防安全专项整治工作
- 农发行玉田县支行开展打击治理电信网络诈骗犯罪宣传活动
- 农发行玉田县支行客户部组织制度集体学习 世界即时
- 中建八局华北公司通州武夷花园项目打造“复工复产服务站”
- 全球热头条丨春风问需惠企业 便民办税暖人心
- 全球今热点:迪丽热巴回国终于营业,穿吊带短裙露小蛮腰,肚子平平力破怀孕传闻
- 赌王三太罕见露面,见证长女与消防员未婚夫甜蜜瞬间,笑得很开心
- 四川省中医药学会第八届营养与食疗专委会换届会议暨2023年学术交流会议成功召开|世界关注
- 收藏滴东方Project721弹 世界观天下
- 回旋变换人偶PB04 假面骑士Geats马格南推进器(重涂装版)&狂热套装公开
- 1 MME编写入门(一)·渲染流水线、认识HLSL|即时看
- 2 【P站美图推荐】#81 精选美图# #p站精选壁纸 #p站排行榜 #美少女 #二次元 #泳装 热文
- 3 世界信息:六省份普查收集一批珍稀农作物种质资源
- 4 河南项城:“母亲河”成了“风景河”
- 5 环球快报:天津市肿瘤医院互联网医院——患者宅在家 服务送上门
- 6 浮山有福了,浮山有赋了!|世界热点
- 7 当前速看:共青希望小学 :弘扬雷锋精神 争做时代新人
- 8 医药板块回暖,创新药指ETF(159858)、医疗产业ETF(159877)携手上扬
- 9 动态焦点:新冠康复8周后还在咳,怎么治?中医支招——
- 10 热线追踪|望京西园四区社区小门变整洁,居民出行路畅通了