surfaceshader专题

【Unity SurfaceShader】学习笔记(八)光照模型

LitSphere(Matcap) 发光球体光照模型就是将发光球体的纹理映射在球体上,来实现光照效果。这可以创造一些效果细腻的发光球体效果,但是它不受光照影响,改变光照的方向,球体的光照效果不变。如果要在固定视角的场景里制作细腻的球体光照,这会是一个不错的选择。 准备小球纹理贴图:   定义Properties: Properties { _MainTint (

【Unity SurfaceShader】学习笔记(七)镜面反射

Unity内置的高光函数 Unity内置了一种高光光照模型——BlinnPhone。 使用方法如下: Shader "Custom/BlinnPhong"{Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_MainTint ("Diffuse Tint", Color) = (1,1,1,1)_SpecColor ("Specular C

【Unity SurfaceShader】学习笔记(六)Cubemap

Cubemap是一种类似天空盒的由六张贴图组成的贴图。它是用于一些需要反射效果的材质,用来反射周围的环境。如果要表现金属材质,通常会给它添加一张反射贴图,来模拟金属表面反射的环境的颜色。因为金属之类的材质它本身其实是没有颜色的,它的颜色就是它反射的周围物体的颜色。如果给金属赋予银白色,并不能得到金属的质感,要让它反射周围的颜色。立方图就是这样一种记录了周围环境颜色的贴图。 Unity提供了一个Re

【Unity SurfaceShader】学习笔记(五)法线贴图

法线贴图是一种在低模上模拟高模的效果的技术。这是维基对它的介绍。 法线贴图类似凹凸贴图的升级版,凹凸贴图记录了物体表面凹凸的情况,法线贴图记录了物体表面凹凸的光照信息。光照信息即是入射光与法线的夹角信息。 为了提高性能,模型的面数越少越好,很多细节的东西都是用贴图去弥补。但是光照是基于顶点去计算的,这样高光阴影等光照的表现就不够真实。于是前辈们发明了法线贴图这个办法,用贴图记录表面的光照信息,也就

【Unity SurfaceShader】学习笔记(四)混合纹理

纹理混合就是将几张纹理重合在一起显示。最常见的情形是地形纹理。混合纹理可以优化性能,这样只要渲染一次混合后的纹理即可,而不必渲染多次。 接下来要介绍的就是如何混合纹理制作地形着色器: 先准备几张贴图: 这几张就是要混合图片。 我们还需要下面这张图片,这张图片就决定了图片是如何混合的: (可以先转到后面看效果) 好了,上代码(我还是直接贴全部吧): Shader "Custom/T

【Unity SurfaceShader】学习笔记(三)让纹理动起来

通过更改Input结构体里UV坐标,我们可以让纹理动起来。 这是一段河流的简易Shader: Shader "Custom/ScrollUVs" {Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {}_ScrollXSpeed ("X Scroll Speed", Range(0, 10)) = 2 _ScrollYSpe

【Unity SurfaceShader】学习笔记(二)用纹理改善漫反射

上一篇里我们做的HalfLambert的效果是这样的: 我们看到,亮部到暗部没有自然的过渡,暗部直接涂成深灰。就像初学者画的素描,直接将暗部涂黑,没有变化。 这是因为这种光照计算太简单了,现实生活中,暗部因为漫反射的存在不会像画面上那么暗。但如果要引入光照计算的话,那太复杂了,我们可以用纹理来改善它。 因为我们需要一张纹理贴图,先在Properties里声明纹理: _RampTex ("

【Unity SurfaceShader】学习笔记(一)认识结构

创建SurfaceShader 1. 新建Unity Project。 2. 在Assets文件夹下新建三个文件夹:Materials、Shaders、Textures。 3. 在Shaders文件夹下右键,Create-Shader-Standard Surface Shader,命名为MySurfaceShader。 4. 在Materials文件夹下新建Material,命名为MySurf