2.在unity中创建shader模板

知识提要:

Mesh Filter : 存储一个Mesh(网格,模型的网格,就是模型的由哪些三角面组成,组成一个什么样子的模型,三角面的一些顶点信息)

Mesh Renderer:用来渲染一个模型的外观,就是样子, 按照 mesh给它皮肤,给它颜色

通过Material(材质)控制模型渲染的样子

Material

        贴图(可以没有,可以是一个单纯的颜色)

        Shader

创建shader时的模板和打包容器

(来自知乎tae)

发现有几种shader选项

 

  • Standard Surface Shader

标准表面着色器,是一种基于物理的着色系统(使用了Physically Based Rendering(简称PBR)技术,即基于物理的渲染技术),以模拟现实真实的方式来模拟材质与灯光之间的关系,可以很轻易的表现出各种金属反光效果,同时此种Shader的书写逻辑也更符合人类的思维模式。

 

  • Unlit Shader

Vertex/Fragment Shader,也就是最基本的顶点片断着色器,不受光照影响的Shader,多用于特效、UI上的效果制作。

 

  • Image Effect Shader

也是顶点片断着色器,只不过是针对后处理而定制的模版,后处理是什么呢?Bloom(也有人叫Glow/泛光/辉光等说法)、调色、景深、模糊等,这些基于最终整个屏幕画面而进行再处理的Shader就是后处理。

 

  • Compute Shader

Compute Shader是运行在图形显卡上的一段程序,独立于常规渲染管线之外的,它可以直接将GPU作为并行处理器加以利用,从而使GPU不仅具有3D渲染能力,还具有其他的运算能力。

 

  • Shader Variant Collection

Shader变体收集器,在上面创建的时候,你会发现Shader Variant Collection与以上四个是被隔开的,就是因为这个与它们不一样,它不是制作Shader的模版,而只是对Shader变体进行打包用的容器。

  • 注:以上的Standard Surface Shader、Unlit Shader、Image Effect Shader仅仅只是Unity为了方便我们书写而内置的几个模版,你完全可以建一个Unlit Shader,然后将其改成Surface Shader,同样也可以将一个Standard Surface Shader改成顶点片断着色器,所以这一点一定要明白,它们只是内容格式不一样的模版本而已,我们完全可以自由修改成任意我们想要的一种着色器类型,当然我们也可以通过一些手段来定制出我们自己的模版,这在后续章节中我们再进行详细介绍。

 

材质与shader的关系

shader必须和材质相关联才可以被游戏中的物体所引用。

从Shader子菜单中选择"Unlit Shader"。创建完成后提示让我们输入新的名称,先不管它,默认即可。

由于在Unity中Shader就是运行在图形显卡上的一段包含指令的代码,所以我们需要再创建一个材质来关联它,这样才能把材质赋给场景中的物体来实现我们想要的效果。

再创建一个材质(Material或者经常被叫做材质球),由于材质也是一个资源,所以我们还是在Project面板中点击右键,从中选择Create/Material,如下图所示:

然后现在我们有了一个Shader和一个材质球,此时如果选中材质球在Inspector面板中就可以看到它的相关参数,比如这个材质所引用的是哪个Shader,以及具体暴露出来的参数是哪些等等。

我们先重点关注下其中的Shader这个参数。

它代表的是当前这个材质球是与哪个Shader绑定关联的,我们可以点击它的下拉列表框从中进行选择,前提是我们知道我们想关联的那个Shader的名字路径是哪个,这一点我们在后面会具体说明。

现在我们采用拖动的方式进行关联,在Project面板下直接拖动Shader到材质球上,然后你会发现材质球的Inspector面板中的Shader参数就已经被指定为刚才那个Shader了。

  • 小技巧:在创建材质球的时候,如果我们选中某个Shader,然后在它上面点击右键来创建材质的话,那么这个材质会自动与此Shader进行关联,无需再单独指定。

 

总结一下Shader与材质的关系:

  1. 一个Shader可以与无数个材质关联。
  2. 一个材质同一时刻只能关联于一个Shader。(为什么说是同一时刻,因为我们可以通过代码去动态改变材质所关联的Shader)
  3. 材质可以赋与模型,但是Shader不行。
  4. 材质就像是Shader的实例,每个材质都可以参数不一样呈现不同的效果,但是当Shader改变时,关联它的所有材质都会相应的改变。
  5. 举个例子:比如游戏中的怪物,我们只需做一个Shader,然后每个怪物给它一个材质球,材质球上赋与不同的贴图与参数来表现不同的怪物。
Unity 打包 WebGL 游戏时,涉及到的着色器(Shader)需要进行一些特殊处理才能正确运行。下面是一个简单的步骤: 1. 确保你的着色器和材质在 Unity 编辑器正确显示和运行。确保着色器代码没有使用不支持 WebGL 的功能。 2. 在 Unity 编辑器选择 File -> Build Settings 打开构建设置窗口。 3. 在构建设置窗口,选择 WebGL 平台并点击 Switch Platform 切换到 WebGL 平台。 4. 在 WebGL 设置,选择 Player Settings 打开游戏玩家设置。 5. 在玩家设置,确保在“Other Settings”部分,“Scripting Backend”设置为“IL2CPP”。这是为了确保 WebGL 构建使用 IL2CPP 脚本编译器。 6. 在玩家设置,找到“Publishing Settings”部分的“WebGL Template”设置。选择一个你喜欢的模板,或者点击“New Template”创建自定义模板。 7. 完成上述设置后,点击 Build 按钮开始构建 WebGL 游戏。 8. 构建完成后,在指定的输出文件夹生成一个网页文件夹。将该文件夹上传到 Web 服务器上,或者通过本地文件系统打开 index.html 文件来运行游戏。 注意事项: - WebGL 平台上的性能可能会受限,因此确保优化你的着色器和代码以提高性能。 - 一些高级的着色器特性可能不被支持或以不同的方式工作。在开发过程请测试并确保一切正常。 - 在处理跨域请求时可能会遇到问题,需要在服务器上进行正确的设置。 希望这些步骤能帮助你成功打包和运行 WebGL 游戏!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值