法线贴图 (Normal Map) 是一种凹凸贴图 (Bump Map)。它们是一种特殊的纹理,可让您将表面细节(如凹凸、凹槽和划痕)添加到模型,从而捕捉光线,就像由真实几何体表示一样。

法线贴图原理

在模型制作中,我们可以真实的去制作出凹凸感,但是这样会增加模型的面数,增加性能。那么有什么办法,不改模型的面数,就能出现凹凸感呢,那便是使用法线贴图,使用一个2D纹理来储存法线数据。

光照到物体上再通过反射光到人眼,当有凹凸面时,那么反射光线与平面是不一样的,从而产生凹凸感。而反射光线跟物体的法线有关,如果我们修改法线方向,那么反射的光线也会随之改变,当照射到人眼时,便会产生凹凸的感觉,也就模拟了真实的凹凸物体。

现实中我们无法做到,但是在计算机中,我们就可以做到,通过计算,实现一种模拟的凹凸感,用一张2D纹理来存储我们的法线数据,来修复模型的法线,从而实现凹凸的感觉。

那么法线贴图该是什么样的呢?平常我们看到法线贴图通常是这样的。那么为什么会是蓝紫色的呢?

在切线空间中,法线的方向使用z轴来表示,法线方向为(0,0,1)。法线向量从z轴方向往其他方向偏移,即修改x,y的值࿰

法线贴图Shader相关推荐

  1. 【游戏开发进阶】带你玩转模型法线,实验一下大胆的想法(法线贴图 | shader | Unity | python | 爬虫)

    文章目录 一.前言 二.直观感受法线贴图 三.表面法线 1.表面法线的概念 2.空间与坐标系 2.1.世界空间--世界坐标系 2.2.局部空间--局部坐标系 2.3.切线空间--切线坐标系 2.4.小 ...

  2. 聚光灯+法线贴图 shader

    前几天看了两个shader分别是聚光灯和法线贴图,于是想把这两个shader结合起来,产生手电照射潮湿的凹凸墙面效果: 本想很容易就能实现但是由于之前不理解光照模型的计算原理,所以我改起来相当费劲,经 ...

  3. Unity Shader法线贴图(Normal Map)及其原理

    简介 以前经常听说"模型不好看啊,怎么办啊?"答曰"加法线","做了个高模,准备烘一下法线贴图","有的美术特别屌,直接画法线贴图 ...

  4. unity基础学习之法线贴图

    原理和概念 法线是一个向量(x,y,z),每一个顶点都有一个法线,用一个纹理去存储的话,那就是(r,g,b),由于法线是垂直于一个面的,对于2d图片来说,那他的z值就是1 用一张纹理来存储法线的值,法 ...

  5. OpenGL shader normals法线贴图的实例

    OpenGL shader normals法线贴图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #in ...

  6. shader 获取法线_Unity Shader 入门到改行5——法线贴图

    the best of blur 1. 法线贴图理论 1.1 什么是法线贴图 一般的贴图中存储的是表面颜色值(RGBA),而法线贴图存放的则是法线信息(xyzw),假设某顶点处的 uv 坐标为 (u, ...

  7. UV滚动+自定义光线高光+LightMap阴影贴图+法线贴图效果shader

    Shader "Custom/FireRingUVShader" {Properties {_Color ("Color Tint", Color) = (1, ...

  8. Unity Shader - 切线空间的法线贴图应用(T2W W2T)

    法线贴图 法线贴图(或是法线纹理)其实就是一张图片中的RGB通道分别存储着法线方向的纹理(有些为了数据压缩将X,Y存储在RG通道,Z是通过1-dot(xy,xy)来近似计算). 它的由来是因为高模运行 ...

  9. shader graph_在Shader Graph中使用表面梯度框架进行法线贴图合成

    shader graph A recent Unity Labs paper introduces a new framework for blending normal maps that is e ...

  10. OpenGL.Shader:9-学习光照-法线贴图(计算TBN矩阵)

    OpenGL.Shader:9-学习光照-法线贴图(计算TBN矩阵) 这次文章学习法线贴图,法线贴图在游戏开发和GIS系统开发当中尤为广泛,其表现力特别的强,绘制的效果特别接近真实.更重要的一点就是, ...

最新文章

  1. SqlServer基础之(触发器)
  2. Xstudio+Bugzilla
  3. 东南大学周张泉:基于知识图谱的推理技术 | 实录·Guru Talk
  4. android多渠道 依赖,android 不同渠道 添加不同依赖jar 使用不同代码
  5. 巴科斯范式BNF: Backus-Naur Form介绍
  6. html怎么实现单个li效果,基于DIV+ul+li实现的表格(多示例)
  7. leedcode刷题——整数反转
  8. Android开发笔记(一百三十八)文本输入布局TextInputLayout
  9. FreeBSD6.1学习笔记[转]
  10. 计算机视觉 | 面试题:26、LBP算法原理
  11. div+css实现背景透明
  12. NAND Flash控制器功能
  13. c51单片机音乐门铃C语言程序,89c51六首歌曲的音乐门铃程序
  14. 屏下摄像头,实现这一全面屏终极方案有多难?
  15. 处理器访问内存时,CPU核、cache、MMU如何协同工作
  16. mysql 一周签到表_最实用的考勤签到表(上下班签到表);
  17. 区块链网络管理平台WeBASE双节点可视化部署
  18. 讲讲我是如何装一个性价比高的EYPC 9654双槽服务器的
  19. css 手型 没生效,css各种手型集合(css禁止手型)(示例代码)
  20. element ui 上传图片

热门文章

  1. Android 12没显示出app的微件问题
  2. 《挚爱》简谱,网上没找到,自己写了个,非专业,敬请指教!
  3. 使用netwox实现tcp rst 攻击及防御措施
  4. 锁机制初探(五)Moniter的实现原理
  5. JS 获取某一年有多少周
  6. Default interface methods are only supported starting with Android N (--min-api 24):
  7. Biotin-PEG8-amine,2183447-27-8具有末端伯胺基的生物素化试剂
  8. 01、u3d自学课程
  9. 微信语音功能模块的测试点
  10. ListView实现物流追踪