漫反射——逐顶点光照

作者:追风剑情 发布于:2016-9-8 1:09 分类:Shader

兰伯特光照模型Shader代码之逐顶点光照 Shader "Custom/Chapter6-DiffuseVertexLevel" { Properties { _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) } SubShader { pass{ Tags { "LightMode"="ForwardBase" } ...

阅读全文>>

标签: Shader

评论(0) 浏览(3944)

总结

作者:追风剑情 发布于:2016-9-4 12:20 分类:Shader

      虽然标准光照模型仅仅是一个经验模型,也就是说,它并不完全符合真实世界中的光照现象。但由于它的易用性、计算速度和得到的效果都比较好,因此仍然被广泛使用。而也是由于它的广泛使用性,这种标准光照模型有很多不同的叫法。例如,一些资料中称它为Phong光照模型,因为裴祥风(Bui Tuong Phong)首先提出了使用漫反射和高光反射的和来对反射光照进行建...

阅读全文>>

标签: Shader

评论(0) 浏览(4037)

逐像素还是逐顶点

作者:追风剑情 发布于:2016-9-4 12:06 分类:Shader

      前面,我们给出了基本光照模型使用的数学公式,那么我们在哪里计算这些光照模型呢?通常来讲,我们有两种选择:在片元着色器中计算,也被称为逐像素光照(per-pixel lighting);在顶点着色器中计算,也被称为逐顶点光照(per-vertex lighting)。       在逐像素光照中,我们会以每...

阅读全文>>

标签: Shader

评论(0) 浏览(7146)

高光反射

作者:追风剑情 发布于:2016-9-4 11:06 分类:Shader

这里的高光反射是一种经验模型,也就是说,它并不完全符合真实世界中的高光反射现象。它可用于计算那些沿着完全镜面反射方向被反射的光线,这可以让物体看起来是有光泽的,例如金属材质。 计算高光反射需要知道的信息比较多,如表面法线、视角方向、光源方向、反射方向等。我们假设这些矢量都是单位矢量。 在这四个矢量中,我们实际上只需要知道其中3个矢量即可,而第四个矢量——反射...

阅读全文>>

标签: Shader

评论(0) 浏览(4585)

漫反射

作者:追风剑情 发布于:2016-9-4 10:35 分类:Shader

      漫反射光照是用于对那些被物体表面随机散射到各个方向的辐射度进行建模的。在漫反射中,视角的位置是不重要的,因为反射是完全随机的,因此可以认为在任何反射方向上的分布都是一样的。但是,入射光线的角度很重要。 漫反射光照符合兰伯特定律(Lambert's law):反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比。因此,漫反射部分的计...

阅读全文>>

标签: Shader

评论(0) 浏览(4715)

自发光

作者:追风剑情 发布于:2016-9-4 10:30 分类:Shader

      光线也可以直接由光源发射进入摄像机,而不需要经过任何物体的反射。标准光照模型使用自发光来计算这个部分的贡献度。它的计算也很简单,就是直接使用了该材质的自发光颜色: Cemissive=Memissive       通常在实时渲染中,自发光的表面往往并不会照亮周围的表面,也就是说,这个物体并不会被当成一个光源。Unit...

阅读全文>>

标签: Shader

评论(0) 浏览(3416)

环境光

作者:追风剑情 发布于:2016-9-4 10:23 分类:Shader

      虽然标准光照模型的重点在于描述直接光照,但在真实世界中,物体也可以被间接光照(indirect light)所照亮。间接光照指的是,光线通常会在多个物体之间反射,最后进入摄像机,也就是说,在光线进入摄像机之前,经过了不止一次的物体反射。       在标准光照模型中,我们使用了一种被称为环境光的部分来近似模拟间接光...

阅读全文>>

标签: Shader

评论(0) 浏览(3771)

标准光照模型简介

作者:追风剑情 发布于:2016-9-4 9:43 分类:Shader

      虽然光照模型有很多种类,但在早期的游戏引擎中往往只使用一个光照模型,这个模型被称为标准光照模型。实际上,在BRDF理论被提出之前,标准光照模型就已经被广泛使用了。       在1975年,著名学者裴祥风(Bui Tuong Phong)提出了标准光照模型背后的基本理念。标准光照模型只关心直接光照(direct l...

阅读全文>>

标签: Shader

评论(0) 浏览(4090)

BRDF光照模型

作者:追风剑情 发布于:2016-9-4 9:07 分类:Shader

      我们已经了解了光线和物体表面相交时会发生哪些现象。当已知光源位置和方向、视角方向时,我们就需要知道一个表面是如何和光照进行交互的。例如,当光线从某个方向照射到一个表面时,有多少光线被反射?反射的方向有哪些?而BRDF(Bidirectional Reflectance Distribution Function)就是用来回答这些问题的。当给定模型表面上的一...

阅读全文>>

标签: Shader

评论(0) 浏览(4431)

着色

作者:追风剑情 发布于:2016-9-4 9:03 分类:Shader

着色(shading)指的是,根据材质属性(如漫反射属性等)、光源信息(如光源方向、辐照度等),使用一个等式去计算沿某个观察方向的出射度的过程。我们也把这个等式称为光照模型(Lighting Model)。不同的光照模型有不同的目的。例如,一些用于描述粗糙的物体表面,一些用于描述金属表面等。

阅读全文>>

标签: Shader

评论(0) 浏览(3194)

吸收和散射

作者:追风剑情 发布于:2016-9-4 8:49 分类:Shader

      光线由光源发射出来后,就会与一些物体相交。通常,相交的结果有两个:散射(scattering)和吸收(absorption)。       散射只改变光线的方向,但不改变光线的密度和颜色。而吸收只改变光线的密度和颜色,但不改变光线的方向。光线在物体表面经过散射后,有两种方向:一种将会散射到物体内部,这种现象被称为折...

阅读全文>>

标签: Shader

评论(0) 浏览(5063)

光源

作者:追风剑情 发布于:2016-9-4 0:29 分类:Shader

辐照度(irradiance) 在实时渲染中,我们通常把光源当成一个没有体积的点,用l来表示它的方向。那么,我们如何测量一个光源发射出了多少光呢?也就是说,我们如何量化光呢?在光学里,我们使用辐照度(irradiance)来量化光。对于平行光来说,它的辐照度可通过计算在垂直于l的单位时间内穿过的能量来得到。在计算光照模型时,我们需要知道一个物体表面的辐照度,而物体表面往往是和l不垂直的...

阅读全文>>

标签: Shader

评论(0) 浏览(3570)

渲染平台的差异

作者:追风剑情 发布于:2016-9-3 19:58 分类:Shader

1、渲染纹理的坐标差异                   2、渲染纹理       我们不仅可以把渲染结果输出到屏幕上,还可以输出到不同的渲染目标(Render Target)中。这时,我们需要使用渲染纹理(Render Text...

阅读全文>>

标签: Shader

评论(0) 浏览(8418)

扩展方法

作者:追风剑情 发布于:2016-9-1 17:24 分类:C#

在不继承的情况下扩展类的方法 using System; namespace TTest { class Program { static void Main(string[] args) { string s = "abcdefg"; Console.WriteLine(s....

阅读全文>>

标签: C#

评论(0) 浏览(3029)

Shader整洁之道

作者:追风剑情 发布于:2016-8-31 22:20 分类:Shader

Cg/HLSL中3种精度的数值类型 类型 精度 float 最高精度的浮点值。通常使用32位来存储 half 中等精度的浮...

阅读全文>>

标签: Shader

评论(0) 浏览(5596)

Unity提供的Cg/HLSL语义

作者:追风剑情 发布于:2016-8-30 22:23 分类:Shader

Unity支持的语义 从应用阶段传递模型数据给顶点着色器时Unity支持的常用语义 语义 描述 POSITION 模型空间中的顶点位置,通常是float4类型 ...

阅读全文>>

标签: Shader

评论(0) 浏览(5651)

Unity提供的内置文件和变量

作者:追风剑情 发布于:2016-8-30 21:40 分类:Shader

Unity的内置着色器文件可以从官网下载 https://unity3d.com/cn/get-unity/download/archive 也可以在安装目录下找到 Mac上 /Applications/Unity/Unity.app/Contents/CGIncludes Windows上 安装路径/Data/CGIncludes Unity中一些常用的包含文件 ...

阅读全文>>

标签: Shader

评论(0) 浏览(5518)

Properties语义块

作者:追风剑情 发布于:2016-8-29 23:12 分类:Shader

ShaderLab属性类型和Cg变量类型的匹配关系 ShaderLab属性类型 Cg变量类型 Color, Vector float4, half4, fixed4 ...

阅读全文>>

标签: Shader

评论(0) 浏览(5687)

顶点着色器和片元着色器之间的通信

作者:追风剑情 发布于:2016-8-29 23:06 分类:Shader

Shader "Custom/VertFragShader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag struct a2v { float4 vertex : POSITION; float3 normal : NOR...

阅读全文>>

标签: Shader

评论(0) 浏览(4179)

自定义顶点着色器的输入参数

作者:追风剑情 发布于:2016-8-29 22:44 分类:Shader

Shader "Custom/VertFragShader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag //使用一个结构体来定义顶点着色器的输入 struct a2v { //变量声明格式: 类型 名称 : 语义 ...

阅读全文>>

标签: Shader

评论(0) 浏览(3406)

一个简单的顶点/片元着色器

作者:追风剑情 发布于:2016-8-29 22:32 分类:Shader

Shader "Custom/VertFragShader" { SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag //POSITION: Unity定义的语义,代表模型的顶点坐标。 //SV_POSITION: Unity定义的语义,代表顶点着色器输出...

阅读全文>>

标签: Shader

评论(0) 浏览(3529)

顶点/片元着色器的基本结构

作者:追风剑情 发布于:2016-8-29 22:02 分类:Shader

Shader "Custom/VertFragShader" { Properties { // 属性 } SubShader { // 针对显卡A的SubShader Pass { // 设置渲染状态和标签 // 开始Cg代码片段 CGPROGRAM // 该代码片段的编译指令,例如: #pragma vertex ...

阅读全文>>

标签: Shader

评论(0) 浏览(3439)

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号