上篇主要讲的是unity中的光照模型及其原理,还有几种光照类型(自发光、环境光、漫反射、高光反射),后面几篇文章就开始在unity中实现这几种光照类型,本篇在unity实现自发光、环境光。

一、unity中的环境光和自发光

在标准光照模型中,环境光和自发光的计算是最简单的。

环境光可以在Window->Rendering->Lighting Settings->Ambient Source/Ambient Color/Ambient Intensity中控制。在shader中,我们只需要通过unity内置变量UNITY_LIGHTMODEL_AMBIENT就可以得到环境光的颜色和强度信息。

而大多物体是没有自发光特性的,如果要计算自发光非常简单,只需要在片元着色器输出最后的颜色之前,把材质的自发光emission计算好添加到输出颜色即可。

拓展:

这里如果要让物体全部区域都自发光,直接添加自发光颜色即可。如果要在某些特定区域去自发光,比如一个玩家模型,头上有一颗宝石,只让宝石拥有自发光,下图是没有自发光效果的原图:

1. 要添加自发光效果那么首先需要加上一张美术做好的黑白通道图,白色区域是宝石的区域,其他地方全黑(原理是白色各向量分量颜色默认值是1,黑色是0,所以和其他参数进行相乘后,黑色区域最后结果始终是0,加到片元输出颜色中没有变化,白色是1,乘以定义的自发光颜色还是自发光的颜色值),如下图:

2. 然后声明属性(包括通道图、自发光颜色、强度)

_EmissionTex("Emission Texture",2D) = "black"{}

_EmissionColor("Emission Color", Color) = (0,0,0,0)

_EmissionPower("Emission Power",Range(0,2)) = 1

3. 然后定义相应变量:

sampler2D _EmissionTex;

fixed _EmissionPower;

fixed4 _EmissionColor;

4. 对通道图进行采样,并和颜色、强度相乘、算出自发光最终颜色值:

fixed4 em = tex2D(_EmissionTex, i.uv);

fixed3 Emission = _EmissionColor * em * _EmissionPower ;

5. 添加到最后的输出颜色中:

c += Emission;

6. 我们可以自己通过材质面板控制自发光颜色、强度,来调整宝石的自发光,这里自发光如果想扩散出来一点光晕,可以结合全屏后处理的bloom效果,这里不再介绍,有兴趣可以自行研究,最后效果图如下:

版权声明:本文为CSDN博主「小橙子0」的原创文章,

遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/cgy56191948/article/details/102486311

unity 太阳自发光_unity shader基础之——unity中实现环境光、自发光相关推荐

  1. unity 半透明混合问题_Unity Shader教程 八、半透明物体的初步探索

    我必须要宣布一个不幸的消息:我们得抛弃跟随我们许久的Sakura.shader,而创建一个新的shader了.它已经完成了自己的使命. 重新写一个shader吧,可以是一个在附加篇写的那种,这次我不会 ...

  2. unity 半透明混合问题_Unity Shader 透明度混合的双面渲染(十八)

    效果: 双面渲染的透明度混合的物体.png 原图: transparent_texture.png Shader代码: Shader中2个Pass代码一样,一个只渲染背面,一个只渲染正面 // 透明度 ...

  3. unity沙子堆积_Unity Shader 之 简单实现沙漠干旱热浪的效果

    CameraHotWave 脚本具体代码和代码说明如下: using UnityEngine; /// /// 实现相机热浪效果 /// [ExecuteInEditMode]     // 编辑状态 ...

  4. sv信道模型是什么_Unity Shader|基本光照模型实现中遇到的疑思

    搞定冯乐乐入门精要的第七章基础光照之没用的疑难杂症886 以下是基础光照的导图:逐顶点分支与逐像素一致,图略.逐三角形一般不适用于平滑几何体,因此很少用到,略. 在做基本光照模型时,不管是做哪个着色频 ...

  5. Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型

    我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...

  6. unity shader入门精要_Unity Shader 入门(二):shader 基础

    一.参考与说明(需要写在开始东西): 1.1 Unity Shader 入门精要学习 https://github.com/candycat1992/Unity_Shaders_Book/tree/u ...

  7. unity 太阳自发光_Unity 光照实例

    本文为 Youtube 博主 Brackeys 的视频<LIGHTING in Unity>学习笔记,原视频见文末,供参考.本实例使用 Unity 2018.2.11f1 制作(因为原视频 ...

  8. Unity之Shader基础探索

    Unity之Shader基础探索 一.什么是Shader? 1.Shader的开发语言 2.着色器用途 3.着色器的编辑 4.着色器性能分析工具 5.着色器编译 6.异步着色器的编译工作原理 7.内置 ...

  9. unity自发光透明shader

    unity自发光透明shader 这本来是一个glass的shader,但是我发现也可以用到自发光+透明,这两个脚本都是unity文档里面的.呵呵~~~ [html] view plaincopypr ...

最新文章

  1. oracle将213变成123,oracle 转换函数
  2. js正则匹配闭合标签_正则匹配闭合HTML标签(支持嵌套)
  3. android打开系统前置摄像头驱动,android 调用系统前置摄像头
  4. java mysql存储图片_Java存储图片到Mysql
  5. JAVA语言基础-面向对象(IO:IO字节流)
  6. 最全java面试题及答案(208道)
  7. python保存快捷键是什么_python常用快捷键
  8. IDEA Springboot docker 构建项目
  9. oracle dbms_lob trim,DBMS_LOB
  10. android xposed 简书,Xposed 入坑篇
  11. linux下下载fnl数据,方便大家下载fnl
  12. SAP中的外币评估记账与正常记账有何区别?
  13. 学计算机有作业吗,有没有电脑高手,大学计算机专业的作业
  14. EOS智能合约开发系列(16): deferred action与inline action
  15. SAP MM 公司间STO外向交货单SPED输出报错 - PO### does not contain a confirmation control key -
  16. IAR_EW430 的使用
  17. 31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)
  18. 【汇编综合应用】大小写字母的转换、2号、9号和10号DOS系统功能调用、分支、循环程序结构、子程序、寄存器传递参数,宏定义、宏调用,观察宏展开。
  19. 任意长度的python列表_任意长度的Python列表、元组和字符串中最后一个元素的索引为...
  20. 治愈大量患者,荣获一致认可

热门文章

  1. H5-input弹起键盘遮盖输入框(Android)、键盘弹起后不恢复(IOS)
  2. 杨辉三角(C语言实现)
  3. 不同的打法,相同的内核,BAT车联网谁也不比谁更强
  4. 重装Intel核显后,设备管理器英特尔显卡属性这里报告了一个未启动设备(igfx)
  5. 网易2017笔试题-日记的颜色
  6. 双指数边缘平滑滤波器用于磨皮算法的尝试。
  7. 【绝地求生:刺激战场】雪地新地图抢先了解
  8. Zhong__pymysql基本使用
  9. 怎么禁止浏览器弹框记住/保存密码及不自动填充密码
  10. Spring Boot 参考文档