Diffuse

openGL学习笔记三十四:光照、光源

核能气质少年 提交于 2020-05-04 21:00:45
一、 光照: 四种光照类型: 放射光(自发光) emissive : 没有光照的情况下物体自身会发射光 如:夜明珠 环境光 ambient : 即使夜里房间灯全部关掉,还是有微弱光(月光)让你能看见房间物体轮廓,这就是环境光 漫反射光 镜面反射光 specular : shininess 材质光泽度对比图 基本光照模型: 计算公式:surfaceColor = emissive + ambient + diffuse + specular (四种光照类型加在一起即可得到物体表面的颜色)   opengl固定渲染管线已经使用了这个公式 ,我们只需要设置下参数,opengl内部会自动进行计算,我们即可看到光照效果。 二、光源: 三种光源类型: 点光 : 如电灯包,向四周360度发射光 有衰减 (可以设置衰减系数) 平行光 : 如太阳,光源在无限远处 聚光灯 : 在锥形区域内有光 相关函数 // 禁用光照时 使用 glColor3f()设置颜色 // 启用光照时 使用 glMaterial()设置材质颜色,glColor3f() 设置颜色无效 glEnable ( GL_LIGHTING ) ; // 启用光照 glEnable ( GL_LIGHT0 ) ; // 激活灯0 GLfloat light_ambient [ 4 ] = { 0.3 , 0.3 , 0.3 , 1.0 }

Cesium

筅森魡賤 提交于 2020-05-02 01:23:10
https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric Fabric Hannah edited this page on 24 Dec 2015 · 67 revisions Contents Introduction Built-In Materials Procedural Textures Base Materials Polyline Materials Misc Materials Common Uniforms Creating New Materials Components Source Input Combining Materials Fabric Schema Materials in the Rendering Pipeline Introduction Fabric is a JSON schema for describing materials in Cesium. Materials represent the appearance of an object such as polygons, polylines, ellipsoids, and sensors. Materials can be as simple as draping an image over an object

Cesium源码剖析---Clipping Plane

拜拜、爱过 提交于 2020-05-01 21:59:31
  之前就一直有写博客的想法,别人也建议写一写,但一直没有动手写,自己想了一下原因,就一个字:懒、懒、懒。为了改掉这个毛病,决定从今天开始写博客了,一方面对自己掌握的知识做一个梳理,另一方面和大家做一个交流,更能深化对问题的理解。废话好像有点多,好了,各位乘客,收起小桌板,系好安全带,要发车喽。   Cesium作为一个开源的webgl三维地球渲染引擎,具备很多的基础功能和高级功能。之前已经有很多文章对Cesium做了相关的介绍以及如何使用API等等,我想和大家分享的是Cesium一些功能的底层实现。作为一个源码研究爱好者,希望能将底层优秀代码和大家分享。我们不是代码的生产者,我们只是代码世界的搬运工,哈哈。听说Cesium最近集成了平面剪裁功能,我们赶紧去看一看。 一 Cesium平面裁剪效果   Cesium裁剪模型的效果如下:                  这就是Cesium中根据一个平面对模型进行裁剪的效果,看上去很神奇。除了可以对单个模型进行裁剪,还支持对3D Tiles模型、地形进行裁剪,裁剪面可以定义成单个面也可以设置成多个面。 二 Cesium平面裁剪调用   在Cesium中添加模型以及对模型进行裁剪非常简单好用,只需下面几行代码就可以实现:  1 var modelEntityClippingPlanes;//定义的裁剪平面集合 2 function

Lecture17_材料与应用(Materials and Appearances)_GAMES101 课堂笔记

喜欢而已 提交于 2020-04-15 12:59:47
【推荐阅读】微服务还能火多久?>>> 本节课主要是讲一些前沿知识,理解即可。 上图是一个图形学中的材料例举,下面介绍一些相关概念: 第一部分:Material == BRDF 一、Diffuse / Lambertian 上图是漫反射( Lambertian)材质,每个出射光线被均匀反射到各个方向上,公式如下: 此时,brdf= 1/pi(BRDF 的取值范围是 0~1/pi)。albedo 的 取值范围是0~1. 二、Glossy material 三、Ideal reflective / refractive material (BSDF) BSDF (散射)是 BRDF(反射)、BTDF(折射)的统称。 四、Perfect Specular Reflection 对于其计算公式如下: 从上向下看,入射和折射方向的方位角相反。 镜面反射应用效果示意如下: 五、Specular Refraction (一)Snell's Law 为了方便计算相关变量,有 Snell's Law : (二)Law of Refraction 其中当 \(1-\left( \frac{\eta_i}{\eta_t} \right)^2 \left(1 - \cos\theta_i \right)<0\) 即 \(\eta_i > \eta_t\) (入射介质 > 出射介质的折射率) 时

Diffuse Shader 添加Alpha通道,并接受场景烘培(LightMap)

戏子无情 提交于 2019-12-04 04:05:41
我们在做手机游戏开发过程中经常使用 Diffuse shader,并对场景进行烘培,这样能用很低的消耗达到不错的效果。 DiffuseShader 不能设置Alpha通道,在实际开发过程中遇到需要透明,或者实现渐隐效果。 全部Shader代码如下 Shader "Mobile/Diffuse_Aplha" { Properties{ _Color("Color",Color) = (1,1,1,1) _MainTex("MainTex",2D) = "white"{} _AlphaScale("AlphaScale",Range(0,1)) = 1 } SubShader{ Tags{"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"} //"RenderType"="Transparent"指明该shader为使用了透明度混合的shader //开启深度写入的Pass是为了将模型的深度信息写入深度缓冲中,从而剔除模型中被自身遮挡的片元 Pass{ ZWrite On ColorMask 0 } Pass{ //Tags{"LightMode" = "ForwardBase"} Zwrite Off //关闭深度写入 Blend SrcAlpha