常用的光照模型Shader Models

Shader Models

着色模型来确定物体的表面不同照明条件下的显示方式。几种数学模型可以用来计算着色。每个着色模型处理表面法线与光源的关系以创建特定遮光效果。

phong模型

 

使用环境,漫反射和镜面反射的颜色。此阴影模型读取表面法线“取向并在它们之间内插来创建平滑阴影的外观。同时它处理光的视图中创建一个镜面高光相机的点法线之间的关系,和。

其结果是,使该对象出现光泽,像一个弹子球或塑料弥漫和在其表面上的照明的环境区和镜面高光平滑阴影的对象。反射率,透明度,折射和纹理可以应用于用的Phong着色阴影中的对象。

Lambert

 

使用环境和漫反射颜色,没有高光打造的磨砂表面。它邻接面三角形的法线之间进行插值,这样的明暗变化逐步,创造了磨砂表面。

结果是一个平滑着色的对象,就像一个鸡蛋或乒乓球。反射率,透明度,折射和纹理可以应用于具有兰伯特着色阴影中的对象。

Bline

 

使用漫反射,环境和镜面颜色,以及用于计算镜面高光的折射率。该遮蔽模型产生与Phong遮蔽模型实质上相同的结果,除了当在相机和光之间存在高入射角时,镜面高光的形状更准确地反映实际照明。

此阴影模型适用于粗糙或锐利的边缘和模拟金属表面。镜面高光也显示比Phong模型更亮。反射率,透明度,折射和纹理可以应用于用Blinn着色器着色的对象。

Cook-Torrance

 

使用漫反射,环境和镜面颜色,以及用于计算镜面高光的折射率。它读取表面法线的方向并在它们之间插值以创建平滑阴影的外观。它还处理法线,光线和相机视角之间的关系,以创建镜面高光。

这个阴影模型产生的结果位于Blinn和Lambert阴影模型之间,对于模拟平滑和反射物体(例如皮革)很有用。反射率,透明度,折射和纹理可以应用于用Cook-Torrance着色器着色的对象。 因为这个阴影模型计算起来更复杂,渲染所需的时间比其他阴影模型要长。

Strauss

 

仅使用漫反射颜色,以模拟在金属表面上。表面的镜面与平滑度和控制漫反射镜面比以及反射率和亮点“metalness”参数来定义。

反射率,透明度,折射和纹理可以应用于与斯特劳斯着色阴影中的对象。

ANisotropic

 

有时也被称为病房,这种着色模型中使用的环境,漫反射和光泽的颜色来模拟一个光滑的表面。要创建一个“刷”的效果,如拉丝铝,可以根据物体的表面取向来定义镜面反射颜色的方向。镜面反射是使用UV坐标计算。

反射率,透明度,折射和纹理可以应用于用各向异性着色阴影中的对象。

Constant

 

只使用漫反射颜色。它忽略曲面法线的方向。所有对象的表面的三角形被认为具有相同的方向,并从光相同的距离。

它会产生一个对象,其表面似乎没有任何阴影可言,像纸一样的切口。当你想静态模糊添加到一个对象,这样就没有镜面或环境光这可能是有用的。它还提供了良好的纹理支持,因为没有属性与纹理的定义来干涉。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
Sure, I can help you with that! A lighting model shader calculates the color of a pixel based on three types of light sources: ambient, diffuse, and specular. Here's a basic example of a lighting model shader, written in GLSL: ``` // Vertex shader attribute vec3 a_position; attribute vec3 a_normal; varying vec3 v_normal; uniform mat4 u_modelViewProjectionMatrix; uniform mat4 u_modelViewMatrix; void main() { gl_Position = u_modelViewProjectionMatrix * vec4(a_position, 1.0); v_normal = mat3(u_modelViewMatrix) * a_normal; } // Fragment shader precision mediump float; varying vec3 v_normal; uniform vec3 u_diffuseColor; uniform vec3 u_lightPosition; uniform vec3 u_ambientColor; uniform vec3 u_specularColor; uniform float u_shininess; void main() { vec3 N = normalize(v_normal); vec3 L = normalize(u_lightPosition - gl_FragCoord.xyz); vec3 V = normalize(-gl_FragCoord.xyz); vec3 H = normalize(L + V); vec3 diffuse = max(dot(N, L), 0.0) * u_diffuseColor; vec3 ambient = u_ambientColor; vec3 specular = pow(max(dot(N, H), 0.0), u_shininess) * u_specularColor; gl_FragColor = vec4(diffuse + ambient + specular, 1.0); } ``` This shader takes in several uniform variables, including the diffuse color of the object being shaded, the position of the light source, the ambient color of the scene, the specular color of the object being shaded, and the shininess of the object. The vertex shader calculates the normal vector for each vertex of the object, while the fragment shader calculates the diffuse, ambient, and specular lighting components for each pixel. I hope this helps you get started with writing your own lighting model shader!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值