一.着色器基础知识 着色器通过代码模拟物体表面发生的事情,其实就是GPU中运行的一段代码. 着色器的类型: 顶点着色器.片元着色器.无光照着色器.表面着色器.图像特效着色器.计算着色器. 坐标空间: 本地空间.世界空间.视图空间.裁剪空间.屏幕空间.正切空间. 光源类型: 点光源.线光源.区域光. 光线影响因素: 光线入射角.物体表面颜色.物体表面光滑度.半透明层. 渲染器类型: 前向渲染器.延迟渲染器.…
转载:http://gad.qq.com/program/translateview/7181958 创建立方体网格.· 支持缩放.位移和旋转. · 使用变换矩阵. · 创建简单的相机投影. 这是关于渲染基础的系列教程的第一部分.它涵盖了变换矩阵. 首先,从程序化网格开始,让我们先遍历下“网格基础”系列.然后你会知道网格是如何工作的.这个系列将探讨这些网格如何最终转换成显示器上的像素.   对空间中的点进行操作. 可视化空间 你现在已经知道了网格到底是什么,以及它们如何在场景中进行定位.但是这个…
可能来源于(英文):https://catlikecoding.com/unity/tutorials/ Unity渲染教程(一):矩阵           http://gad.qq.com/program/translateview/7181958 Unity渲染教程(二):着色器基础          https://www.jianshu.com/p/7db167704056 Unity渲染教程(三):使用多张纹理        https://www.jianshu.com/p/0e7…
https://www.jianshu.com/p/c1a9a5d27765 对每个物体渲染多个光源的光照效果. 支持不同的光源类型. 使用光源cookie. 计算顶点光照. 在光照计算中添加球面谐波函数(spherical harmonics)的光照. 这是关于渲染基础的系列教程的第五部分.这个系列教程的上一部分讲的使用单一方向光的光照效果.现在我们将要添加对多光源光照的支持. 系列回顾: Unity 渲染教程(一):矩阵 Unity 渲染教程(二):着色器基础 Unity 渲染教程(三):使…
将法线从物体空间转换到世界空间. 使用方向光. 计算漫反射和镜面高光反射. 实现能量守恒. 使用金属的工作流程. 利用Unity的基于物理规则渲染的算法. 这是关于渲染基础的系列教程的第四部分.前面的教程介绍了混合使用多张纹理.这一次,我们将看看如何计算光照. 这个系列教程是使用Unity 5.4.0开发的,这个版本目前还是开放测试版本.我使用的是5.4.0b17版本. 这个教程使用的着色器与前面的教程不匹配? 为了提高兼容性,我已经改变了以前的教程中的着色器.我还在这个系列的第二部分中介绍了着…
转载:https://www.jianshu.com/p/7db167704056 这是关于渲染基础的系列教程的第二部分.这个渲染基础的系列教程的第一部分是有关矩阵的内容.在这篇文章中我们将编写我们的第一个着色器代码并导入纹理. 这个系列教程是使用Unity 5.4.0开发的,这个版本目前还是开放测试版本.我使用的是build 5.4.0b10版本.     对球使用纹理. 1. 默认的场景 当你在Unity中创建新的场景的时候,你将使用默认的相机和定向的光源.  通过GameObject /…
在这一小节,主要学习GLSL的基本数据类型以及控制结构.GLSL具备了C++和Java的很多特性,我们会先了解所有着色阶段共有的特性,再了解各个着色器的专属特性. 1.着色器的基本结构 一个着色器程序和一个C程序类似,都是从main()函数开始执行的.同样支持单行注释//以及多行注释/**/ #version 330 core void main(){ // add test code }  2.着色器的数据类型 GLSL是一种强类型的语言,所有变量使用前的必须声明.可用字母.数字.以及下划线字…
在这一章,我们会学习什么是着色器(Shader),什么是着色器语言(OpenGL Shading Language-GLSL),以及着色器怎么和OpenGL程序交互. 首先我们先来看看什么叫着色器. Shader(着色器)是用来实现图像渲染的,用来替代固定渲染管线的可编程程序. 着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编程性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制.这极大的提高了图像的画质. 在上一篇文章( http://www.cnblog…
对多个纹理进行采样 应用一张细节贴图 在线性空间中处理颜色 使用一张splat纹理 这是关于渲染的教程系列的第三部分. 前面的部分介绍了着色器和纹理. 我们已经看到如何使用单个纹理来使平坦表面看起来更加复杂. 现在我们超越了它,同时使用多个纹理. 本教程是使用Unity 5.4.0进行的,目前该版本是开放测试版. 我使用build 5.4.0b15.     混合的多张贴图 texel的解释 texel(纹理元素的简写)是纹理图形的基本单位,用于定义三维对象的曲面.3D 对象曲面的基本单位是纹理…
在实时渲染的图形开发中,着色器代码(Shader)越来越复杂,于是单纯的靠经验和不断试错的开发和调试方法早已不能满足实际需求.使用调试工具进行调试,成为开发中重要的方法.Bgfx 是一款跨平台.抽象封装了众多主流图形 API 的优秀渲染引擎.作为示例,本文在 Windows 平台上演示使用 Microsoft Visual Studio* 和 RenderDoc 对 Bgfx 中的 DX11 着色器代码进行调试.了解详情…