学习资料: http://www.sikiedu.com/course/37/task/456/show# http://www.sikiedu.com/course/37/task/458/show# 为何要用法线贴图 为了提升模型表现细节而又不增加性能消耗,所以不选择提高模型的面数,而是给模型的材质Shader中使用上法线贴图(Normal Map),通过更改模型上的点的法线方向,增加光影凹凸效果,从而提升模型表现细节.使用法线贴图能使一个三角面(平面)表现出凹凸的视觉效果! 法线贴图原理…
咳咳,好久没有更新了,一来是这段时间很忙很忙,再来就是自己有些懒了,这个要不得啊,赶紧补上.在前面我们已经介绍过了漫反射和镜面反射,这两个是基本的光照类型,仅仅依靠它们就想制作出精美的效果是远远不够的,这一篇我们就来了解一下如何利用一种叫做法线贴图的技术并结合我们前面讲过的知识来制作出更精细的效果. 法线贴图NormalMap 首先要提到的是,什么是法线贴图,如果大家想看更专业的解释可以自行求助搜索引擎,这里我说一下我的个人理解:在游戏中,如果角色或物体模型做的越精细(面数越多),那么渲染后效果…
翻译:非常详细易懂的法线贴图(Normal Mapping) 本文翻译自: Shaders » Lesson 6: Normal Mapping 作者: Matt DesLauriers 译者: FreeBlues 这一系列依赖于最小规模的用于着色器和渲染工具的lwjgl-basics API. 代码已经被移植到 LibGDX. 这些概念是足够通用的, 它们能被应用于Love2D, GLSL Sandbox, iOS, 或者其他支持 GLSL 的平台. 概述 本文聚焦于 3D 光照和法线贴图技术…
转自:http://www.zwqxin.com/archives/shaderglsl/review-normal-map-bump-map.htmlNormal Map法线贴图,想必每个学习计算机图形学的人都不陌生.今天在这里按我的理解总结一下,作为复习,也作为深入学习吧.——ZwqXin.com自从看完那本<数学在计算机图形学上的应用>后,一直想好好地真正实践一次法线贴图/凹凸贴图呢(以前是根据橙书弄了一下罢了).昨天偶尔看到篇涉及BumpMap的文,正好觉得是个机会,便在网上狂找相关资…
实际效果请看demo:纹理贴图 为了增加额外细节,提升真实感,我们使用了漫反射贴图和高光贴图,它们都是向三角形进行附加纹理.但是从光的视角来看是表面法线向量使表面被视为平坦光滑的表面.以光照算法的视角考虑的话,只有一件事决定物体的形状,那就是垂直于它的法线向量.砖块表面只有一个法向量,表面完全根据这个法向量被以一致的方式照亮.如果每个片元都用不同的法线会怎样?这样我们就可以根据表面细微的细节对法线向量进行改变:这样就会获得一种表面看起来要复杂得多的幻觉: 每个片元使用了自己的法线,我们就可以让光…
https://mp.weixin.qq.com/s/Qf4qT15s9bWjbVGh7H32lw 我们刚刚公布了Unity 2018.1中,Unity将会内置可视化编程工具Shader Graph,很多开发者留言给小编是否以后构建着色器编码就可以下岗了.实际上Unity希望开发能够越来越大众化,减轻技术上的壁垒,Shader Graph虽然能够更加轻松的构建着色器,但实际上开发者都应该掌握着色器的开发. 广受开发者欢迎的Unity着色器训练营已经开展三期了.本篇文章将由Unity技术经理鲍健运…
法线贴图+纹理贴图(细节明显) 纹理贴图 法线贴图 法线贴图 存储法线的一张贴图,归一化的法线的 xyz 的值被映射成为对应的 RGB 值.归一化的法线值为[-1,1],RGB的每一个分量为无符号的8位组成,范围[0,255].即法线的分量由[-1,1]映射成[0,255].法线贴图一般呈蓝色,因为大多数朝向 (0,0,1)的法线被映射成为了 (0,0,255). 转换关系: 法线转RGB: R = (x+1)/2*255: G = (y+1)/2*255: B = (z+1)/2*255: R…
1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法线值. 2.法线映射:使用一张法线纹理直接存储表面法线. 1.1 高度纹理 高度图中存储的是强度值(intensity).越浅越说明向外凸起,越深越向里凹. 缺点是计算复杂,消耗性能. 高度图也会与法线映射一起使用.给出表面凹凸的额外信息. 1.2 法线纹理 法线纹理中存储的是法线方向.法线方向的范…
有时候材质做完后需要更改贴图,或者增加贴图,数量少的时候可以一张张添加和修改,数量多的时候就只能代码生成了.原理是通过名字的关联:主贴图和法线贴图大多数只是后缀的不同上,如果不是那是美术规范没做好啊,代码很简单,基本是编辑器类的代码. 这个是还没完善的特定版代码,如直接使用需要更改文件夹名字和贴图后缀. using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor;…
效果图 贴图 法线贴图 //代码 Shader "Custom/NormalMap" { Properties { _MainTex ("Texture", 2D) = "white" {} _NormalMap ("NormalMap", 2D) = "bump" {} _Color ("Main Color", Color) = (1,1,1,1) _SpecColor("…