UE4 材质学习笔记01(什么是着色器/PBR基础)

news/2024/10/9 10:18:35/

1.什么是shader

着色器是控制屏幕上每个像素颜色的代码,这些代码通常在图形处理器上运行。

现如今游戏引擎使用先进的基于物理的渲染和照明。而且照明模型模型大多数是被锁定的。

因此我们创建着色器可以控制颜色,法线,粗糙度,金属度,即物体的表面属性,然后游戏引擎自己会为物体照明,着色器控制的是材质属性,就像上面说的那些,而不是光线。

所以我们创建着色器时就专注于左栏的内容,让游戏引擎为我们照明。

1.1介绍UE4材质编辑器的使用。

下面这个时材质的预览界面,右下角可以切换不同的形状,另外左上角还可以切换透视视图和正交视图

然后左上角这个地方可以切换不同选项来查看模型,右面的显示可以隐藏或者显示网格,背景或者统计数据。

 

2.PBR基础

1.什么是PBR

PBR是基于物理的渲染,过去计算机图形只是试图模仿光线的外观,但是使用PBR是在模拟光线的实际行为。这样可以创建更逼真的图像。

PBR有两个主要组成部分,光照属性和表面属性。

光照属性主要由游戏引擎本身控制,表面属性则是由创建的着色器定义它们

2.光照属性

首先先来了解一下光照属性。

光可以来自两种类型的光源:直接光源和间接光源。

直接光源:光从单个方向射入,直接照射到物体表面

间接光源:光从各个方向射入,并在周围环境中反弹,才到达物体表面

在光线照射到表面后,还会发生漫反射和镜面反射以及其它的一些现象,但是我们先来研究这两个最常见的现象。

镜面反射:在一个主要聚焦方向上离开表面

漫反射:在所有方向上离开表面

如果我们将入射和出射的情况结合起来,就会得到四种主要的光表面相互作用

在现实中,这四个的区别几乎不存在,但在计算机图形学中,用这种方式来分解时很方便的,这样我们就可以开发出处理每一个情况的方法。

下面我们来看一下这四个的图像实例

 

 

3.表面属性

1.BaseColor

下面是一个基础颜色纹理的例子。

可以看到它是不包括任何光照或者阴影的,右下角是真实世界中一些物体的颜色的实际颜色

2.Normal

 下面是一个法线贴图的示例

3.Specular

下面是一个Specular贴图的示例。

虽然反射贴图大部分都应该是0.5,但是很明显裂缝是不应该反射的,所以最好的反射贴图就是将一个裂缝的贴图*0.5.

4.Roughness

 下面是粗糙度贴图示例

5.Metallic

当在材质编辑器的根节点给金属度赋值的时候,这本质上是两个材质或者两个着色器合一,会分别由一个着色器来定义金属物体和非金属物体,而你输入的值会决定你使用哪一个着色器

当金属度是0的时候,基础颜色会是物体的漫反射,输入到Specular的值会决定物体的反射率在0-8%之间。但是对于金属度为1的物体,输入的颜色会转变成反射率,并且无论向高光输入什么值都会被忽视掉,并且现在漫反射总是黑色。并且金属度是非黑即白的,因为世界上并没有介于金属与非金属之间的物体

 

如果一个物体的表面是金属的,那么它的SRGB 是要大于180的。下面这个是上面示例里鹅卵石的金属度贴图,很明显这并不是金属,所以它是黑色的。

 另外还有一个AO贴图,虽然这个是光照属性里的,但是这里也说一下

这基本上是一个间接漫反射的乘数,这样物体就不会在不该有的地方得到漫反射。AO和法线贴图都是烘焙出来的


http://www.ppmy.cn/news/1536589.html

相关文章

unsat钱包签名算法解析

unsat钱包签名算法解析 在数字货币领域,安全性是至关重要的,而签名算法则是确保交易和信息不可伪造的基础。本文将深入解析 unsat 钱包中使用的签名算法,重点关注如何生成和验证消息签名。 1. 签名算法概述 unsat 钱包使用 ECDSA&#xff…

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了! 在多模态领域,开源模型也超闭源了! 就在刚刚结束的Met…

python 实现djb2哈希算法

djb2哈希算法介绍 DJB2哈希算法是一种简单且快速的哈希算法,由Daniel J. Bernstein设计。这种算法的实现非常简单,适用于短键值的哈希表,也常被用于嵌入式设备和资源受限的系统。 基本原理 DJB2算法的原理是将输入的字符串视为一个字节数组…

【3D目标检测】激光雷达和相机联合标定(二)——MATLAB联合标定工具使用

MATLAB联合标定工具使用 引言1 MATLAB 样例标定(lidarcamera)1.1 官网数据集准备1.2 激光雷达相机联合校准(1)打开 Lidar Camera Calibrator App(2)导入数据(3)编辑感兴趣区域 Edit …

08_OpenCV文字图片绘制

import cv2 import numpy as npimg cv2.imread(image0.jpg,1) font cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img,(500,400),(200,100),(0,255,0),20) # 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 line type cv2.putText(img,flower,(200,50),font,1,(0,0,250)…

学习Flask框架

Flask简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没…

JS设计模式之策略模式:灵活、可扩展的编程利器

一. 前言 在 JavaScript 前端开发中,随着代码规模的增长和项目的复杂性,我们常常需要处理各种不同的条件和情况,而这可能导致代码变得冗长、难以维护。这时,我们就需要一种强大而灵活的编程模式来应对这些复杂的逻辑,…

【玩转动态规划专题】70. 爬楼梯【简单】

【玩转动态规划专题】70. 爬楼梯【简单】 1、力扣链接 https://leetcode.cn/problems/climbing-stairs/description/ 2、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1&…