Lambert 光照模型
简介
lambert 光照模型可以说是最简单的光照模型了. 主要考虑了 漫反射. 漫反射也单单考虑了经验模型.
主要观察 面片渲染器(我是这么叫的)
参考链接
https://zhuanlan.zhihu.com/p/191561026
https://zhuanlan.zhihu.com/p/144681176
code
#version 420
out vec4 FragColor;
in vec3 pos;
in vec3 color;
uniform int colormode = 1;
uniform int drawmode = 1;
void main() {
if(colormode == 0){
FragColor = vec4(color,1.0);
} else if (colormode == 1) {
if(drawmode == 0){
FragColor = vec4(0.25,0.25,0.25,1.0);
} else {
vec3 n = normalize(cross(dFdx(pos),dFdy(pos)));
vec3 lposition = vec3(0.0f,0.0f, 255f);
vec3 viewposition = vec3(0.0f,0.0f, 0.5f);
float f = 0.6f;
float ambient_light_coefficient = 0.4f;
vec3 ambient = vec3(0.6f, 0.6f, 0.6f);
vec3 lightDir = normalize(lposition - pos);
vec3 color_diffuse = ambient * max(0.0, dot(n, lightDir)) * f;
FragColor = vec4(color_diffuse,1.0);
}
} else {
FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
}
核心代码讲解
vec3 color_diffuse = ambient * max(0.0, dot(n, lightDir)) * f;
漫反射 = 光照强度(环境光) * 光照向量和物体表面法向量的余弦值 * 反射系数;
注: 余弦值是正值, 最小值为0, 表示没有光照影响.
注: 余弦值的计算为 两个单位向量的点乘.
\]
image

Lambert 光照模型的更多相关文章
- Unity3D ShaderLab Half Lambert光照模型
Half Lambert光照模型 说到Half Lambert ,就不得不说反恐精英了,在制作反恐精英的过程中,为了防止物体的背面光丢失而显得太过平面化,就用了这个称之为half lambert的技术 ...
- Lambert(朗伯)光照模型 和Half Lambert的区别
Lambert-它不包括任何任何镜面属性,对粗糙物体来说,这项属性是非常有用的,它不会反射出周围的环境.Lambert材质可以是透明的,在光线追踪渲染中发生折射,但是如果没有镜面属性,该类型就不会发生 ...
- Lambert (兰伯特)光照模型
Lambert (兰伯特)光照模型 是光源照射到物体表面后,向四面八方反射,产生的漫反射效果.这是一种理想的漫反射光照模型.如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑. 漫反射 ...
- [CG编程] 基本光照模型的实现与拓展以及常见光照模型解析
0.前言 这篇文章写于去年的暑假.大二的假期时间多,小组便开发一个手机游戏的项目,开发过程中忙里偷闲地了解了Unity的shader编写,而CG又与shaderLab相似,所以又阅读了<CG教程 ...
- Unity3D ShaderLab 自定义光照模型
接着上一篇BasicMyDiffuse的代码来说,这次要说明的就是自定义的光照模型,Ctrl+D>BasicMyDiffuse. 1.>//#pragma surface surf Lam ...
- 【Unity Shaders】使用CgInclude让你的Shader模块化——创建CgInclude文件存储光照模型
本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...
- Unity shader学习之逐像素漫反射光照模型
shader如下: Shader "Custom/Diffuse Fragment-Level" { Properties { _Diffuse (,,,) } SubShader ...
- (转)光照模型及cg实现
经典光照模型(illumination model) 物体表面光照颜色由入射光.物体材质,以及材质和光的交互规律共同决定. 由于环境光给予物体各个点的光照强度相同,且没有方向之分,所以在只有环境光的情 ...
- Lambert模型
[Lambert模型] 漫反射光的强度近似地服从于Lambert定律,即漫反射光的光强仅与入射光的方向和反射点处表面法向夹角的余弦成正比. 由此可以构造出Lambert漫反射模型:Idiffuse = ...
- Unity Shader入门教程(三)自制光照模型
光照模型的概念目前还不明晰,因为笔者也是一个初学者,所以请小心对待笔者介绍的内容.笔者认为光照模型是规定光照算法的模型,比如说前面提到的Lambert光照模型,规定了材质表面的光线的表达式为 环境光+ ...
随机推荐
- @PathVaribale
/** * @pathVaribale * 作用: 用于获取url 中的占位符的值. * 例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符. * url 支持占位符是 ...
- 使用注解的方式编写:@Aspect运用
列子. public interface Calculator { // 加 public int add(int i,int j); // 减 public int sub(int i,int j) ...
- springAPI对事物支持之注解式配置
一.无Spring核心配置文件:applicationContext.xml下开启注解式事物 @Configuration @EnableTransactionManagement public cl ...
- 🎀FreeMarker 禁止自动转义标签-noautoesc
简介 FreeMarker 是一个用 Java 语言编写的模板引擎,它被设计用来生成文本输出(HTML 网页.电子邮件.配置文件等).在 FreeMarker 中,默认情况下,当你在模板中输出变量时, ...
- leetcode001 两数之和
问题描述:两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答 ...
- vue属性/子属性监听watch的几种方法
特殊字符法 特殊字符+deep法 直接deep法 常规法 直接用如下代码示例吧: data(){ return { goBackHeader:'添加排班', scheduleForm:{ schedu ...
- Java编程--String类和基本数据类型的相互转换
基本数据类型:byte.short.int.long.char.float.double.boolean 基本数据类型->String:利用String类提供的ValueOf(基本类型)方法转换 ...
- maven-helper解决依赖冲突
idea中可以使用maven-helper解决依赖冲突
- 代码随想录第二十四天 | Leecode 93. 复原IP地址 、78. 子集、 90.子集II
Leecode 93. 复原IP地址 题目描述 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔. 例如:"0.1.2 ...
- 百图生科:基于 JuiceFS 构建生命科学大模型存储平台,成本降 90%
百图生科(BioMap)由百度创始人李彦宏先生联合创立,专注于生命科学领域的人工智能技术.公司推出了全球最大的生命科学 AI 基础模型 xTrimo V3,拥有 2100 亿参数,覆盖蛋白质.DNA. ...