单张纹理

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

使用一张纹理来代替物体的漫反射颜色。 Shader代码 Shader "Custom/Chapter7-SingleTexture" { Properties { _Color ("Color Tint", Color) = (1, 1, 1, 1) _MainTex ("Base (RGB)", 2D) = "white" {} _Specu...

阅读全文>>

标签: Shader

评论(0) 浏览(9478)

Blinn-Phong光照模型

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

       Blinn-Phong光照模型的高光反射部分看起来更大、更亮些。在实际渲染中,绝大多数情况我们都会选择Blinn-Phong光照模型。需要再次提醒的是,这两种光照模型都是经验模型,也就是说,我们不应该认为Blinn-Phong模型是对“正确的”Phong模型的近似。实际上,在一些情况下,Blinn-Phong模型更符合实验结果。 B...

阅读全文>>

标签: Shader

评论(0) 浏览(11734)

高光反射光照模型——逐像素光照

作者:追风剑情 发布于:2016-9-14 22:33 分类:Shader

可以使用逐像素光照来得到更加平滑的高光效果。 Shader代码 Shader "Custom/Chapter6-SpecularPixelLevel" { Properties { //漫反射颜色 _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) //高光反射系数,用于控制材质的高光反射颜色 _Specular ...

阅读全文>>

标签: Shader

评论(0) 浏览(3972)

高光反射光照模型——逐顶点光照

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

函数: reflect(i, n) 参数: i, 入射方向;n, 法线方向。可以是float、float2、float3等类型。 描述: 当给定入射方向i和法线方向n时,reflect函数可以返回反射方向。 Shader代码 Shader "Custom/Chapter6-SpecularVertexLevel" { Properties { //...

阅读全文>>

标签: Shader

评论(0) 浏览(3887)

Unity中的环境光和自发光

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

在标准光照模型中,环境光和自发光的计算是最简单的。 在Unity5中,场景中的环境光可以在Windows->Lighting->Ambient Source/Ambient Color/Ambient Intensity中控制。 在Unity4中,场景中的环境光可以在Edit->Render Settings中控制。 在Shad...

阅读全文>>

标签: Shader

评论(0) 浏览(13749)

漫反射——半兰伯特(Half Lambert)光照模型

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

广义的半兰伯特光照模型公式: 绝大多数情况下,α和β的值均为0.5,即公式为: 半兰伯特Shader代码 Shader "Custom/Chapter6-HalfLambert" { Properties { _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) } ...

阅读全文>>

标签: Shader

评论(0) 浏览(9380)

漫反射——逐像素光照

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

      逐像素光照可以得到更加平滑的光照效果。但是,即便使用了逐像素漫反射光照,有一个问题仍然存在。在光照无法到达的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看来就像一个平面一样,失去了模型细节表现。实际上我们可以通过添加环境光来得到非全黑的效果,但即便这样仍然无法解决背光面明暗一样的缺点。为此,有一种改善技术被提出来,这就是半兰伯特(H...

阅读全文>>

标签: Shader

评论(0) 浏览(3777)

漫反射——逐顶点光照

作者:追风剑情 发布于: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) 浏览(3379)

总结

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3364)

逐像素还是逐顶点

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(6301)

高光反射

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3818)

漫反射

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3869)

自发光

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(2800)

环境光

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3110)

标准光照模型简介

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3396)

BRDF光照模型

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3907)

着色

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(2638)

吸收和散射

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(4193)

光源

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(3019)

渲染平台的差异

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(7721)

Shader整洁之道

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(4935)

Unity提供的Cg/HLSL语义

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

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

阅读全文>>

标签: Shader

评论(0) 浏览(4954)

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号