漫反射光专题

[UnityShader入门精要读书笔记]10.在UnityShader中实现漫反射光照(逐像素光照)

shader "custom/DiffusePixelLevel"{     //1.为了得到并且控制材质的漫反射颜色,我们首先在shader的Properties语义块中声明了一个Color类型的属性,并把它的初始值设为白色。      Properties{         _Diffuse("Diffuse",color) = (1,1,1,1)     }         //2

[UnityShader入门精要读书笔记]09.在UnityShader中实现漫反射光照(逐顶点光照)

为了防止点积结果为负值,我们需要使用max操作,而CG提供了这样的函数。使用另外一个CG函数也可以达到这样的目的。即saturate函数。 函数:saturate(x) 参数:x:用于操作的标量或矢量,可以是float,float2,float3等类型。 描述:把x截取在[0,1]范围内,如果x是一个矢量,那么会对它的每一个分量进行这样的操作。 1.逐顶点光照 shader "cus

Unity Shader 漫反射光照模型-逐像素-半兰伯特模型

半兰伯特模型 Shader "MyShader/HalfLambertLevel"{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "

Unity Shader 漫反射光照模型-逐像素

逐像素光照 Shader "MyShader/DiffusePixelLevel"{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "

Unity Shader 漫反射光照模型-逐顶点

逐顶点光照 Shader "MyShader/DiffuseVertexLevel"{Properties{_Diffuse("Diffuse",Color) = (1,1,1,1)}SubShader{Pass{Tags{"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include

Diffuse Lighting(漫反射光)

Diffuse Lighting(漫反射光) 不同的材质表面反射光的方式也不同。在镜面上光的反射角度与入身角度相等。当在一只猫的眼睛里看到一束怪异的光芒,这就是光的反射性:这是由于猫的眼睛反射光的方向与光源的照射方向平行,但是方向相反。漫反射表面对光的反射在各个方向上都一样。 近似计算一个漫反射光,最简单并且最常用的模型是Lambert’s cosine law(朗伯余弦定律)。根据Lambe

unity shader学习笔记(4):Diffuse(漫反射光照计算)

光照计算学习之漫反射: 先看看效果图 漫反射的方向是不规则的向四周发散出去 ,所以没有高光效果。 代码重点部分都有注释: 需要重点理解DOT函数 具体使用地方 和数学几何含义:上一篇有简单介绍 推导函数N·L=|N|*|L|*cosθ  表面法线越接近光照方向表示越亮。 公式: diffuse = Kd * lightColor * max(dot(N, L), 0)    如果你也在

WebGL 计算平行光、环境光下的漫反射光颜色

目录 光照原理 光源类型 平行光 点光源 环境光 反射类型 漫反射 漫反射光颜色 计算公式 环境反射 环境反射光颜色 表面的反射光颜色(漫反射和环境反射同时存在时)计算公式 平行光下的漫反射 根据光线和法线方向计算入射角θ(以便求两者点积:cosθ) 归一化 法线:表面的朝向 一个表面具有两个法向量 平面的法向量唯一 示例代码——平行光漫反射(LightedCu