UnityShader 从入门到盖棺(二)

本文是Unity Shader学习系列的第二篇,介绍了如何使用贴图和Lambert光照模型创建一个有质感的房子。通过创建自定义材质,应用纹理并实现Lambert光照模型,使得场景中的物体呈现出更真实的光照效果。
摘要由CSDN通过智能技术生成

gamebighouse

前言

 这是我入门学习笔记的第二篇。这篇开始,我们会逐渐做一些更贴近实际的效果。而不是和上周那个球体球体,随便输出点莫名其妙,妙不可言的颜色(✿◕‿◕✿)。

 另外,本章节可能还会稍微提及上一章的代码,但是后续可能会逐渐跳过大量的代码来篇幅。毕竟我想让读者关注到本章更核心的内容,而不是一直重复某些事情。如果读者想要获取完整代码甚至整个场景,可以到我的github上面去下载。

贴图和lambert光照模型

回到正文,如标题说的,本章分享一下贴图,以及一个很简单的光照模型-lambert光照模型。我们还是老套路,先把最终效果砸出来。

bighouse

可以看到,这是一个简单的房子(千万不要和我说丑,说就是一巴掌)。我们第一步,先把房子搭建起来。很简单,只需要创建6个平面。可以参考我的层次关系以及每个平面的变换。

modelcreate

现在每个平面使用的都是默认材质Default-Material。看起来场景样子是这样的。

tempresult1

现在我们先不讨论这个默认材质,我们需要创建自己的材质然后替换掉它。

第二步,创建一个Unlit_Shader文件, 命名为2_DiffuseWall。打开UnityShader文件后,把里面的内容全删了,并且复制下面一大段代码进去保存。这里除了Cull Off之外用到的都是上一篇讲到的操作和代码,之后的教程,我会尽量跳过这些内容。

Cull Off, 是指禁用掉面剔除。什么是面剔除,拿一个正方体来说,我们正常能看到的最多是一个正方体的3个面(你可以试下你能不能成为那个不正常的人),所以剩余三个面就没有绘制的必要了。因此我们会把它剔除掉,具体剔除规则是通过整个面的顶点绘制顺序来判断正反面,我们通常把反面剔除掉。而Plane这个默认对象,他只有单面,因此,如果我们到背面去看他,他就会消失不见,原因就是因为被Unity剔除掉了。

Shader "Unity Shader/C2/2_WallDiffuse" {
	Properties {
		_MainColor ("color tint", COLOR) = (1.0, 1.0, 1.0, 1.0)  // 物体的主颜色
	}
	SubShader {
		Pass {
		    
		    Cull Off // 把面剔除禁用
			CGPROGRAM // CG代码块

			#pragma vertex vert // 声明vert函数为顶点着色器
			#pragma fragment frag // frag为片段着色器

			fixed4 _MainColor;

			struct a2v {  // 顶点着色器输入结构体
				float4 vertex : POSI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值