unity 太阳自发光_unity shader基础之——unity中实现环境光、自发光
上篇主要讲的是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中实现环境光、自发光相关推荐
- unity 半透明混合问题_Unity Shader教程 八、半透明物体的初步探索
我必须要宣布一个不幸的消息:我们得抛弃跟随我们许久的Sakura.shader,而创建一个新的shader了.它已经完成了自己的使命. 重新写一个shader吧,可以是一个在附加篇写的那种,这次我不会 ...
- unity 半透明混合问题_Unity Shader 透明度混合的双面渲染(十八)
效果: 双面渲染的透明度混合的物体.png 原图: transparent_texture.png Shader代码: Shader中2个Pass代码一样,一个只渲染背面,一个只渲染正面 // 透明度 ...
- unity沙子堆积_Unity Shader 之 简单实现沙漠干旱热浪的效果
CameraHotWave 脚本具体代码和代码说明如下: using UnityEngine; /// /// 实现相机热浪效果 /// [ExecuteInEditMode] // 编辑状态 ...
- sv信道模型是什么_Unity Shader|基本光照模型实现中遇到的疑思
搞定冯乐乐入门精要的第七章基础光照之没用的疑难杂症886 以下是基础光照的导图:逐顶点分支与逐像素一致,图略.逐三角形一般不适用于平滑几何体,因此很少用到,略. 在做基本光照模型时,不管是做哪个着色频 ...
- Unity Shader中的基础光照与标准光照模型(自发光、环境光、高光反射、漫反射)、BRDF光照模型
我们是如何看到这个世界的 从宏观上来说,渲染包含了两大部分 决定一个像素的可见性 决定这个像素上的关照计算 而光照模型就是用于决定一个像素上进行怎样的光照计算 通常来讲,我们要模拟真实的光照环境来生成 ...
- unity shader入门精要_Unity Shader 入门(二):shader 基础
一.参考与说明(需要写在开始东西): 1.1 Unity Shader 入门精要学习 https://github.com/candycat1992/Unity_Shaders_Book/tree/u ...
- unity 太阳自发光_Unity 光照实例
本文为 Youtube 博主 Brackeys 的视频<LIGHTING in Unity>学习笔记,原视频见文末,供参考.本实例使用 Unity 2018.2.11f1 制作(因为原视频 ...
- Unity之Shader基础探索
Unity之Shader基础探索 一.什么是Shader? 1.Shader的开发语言 2.着色器用途 3.着色器的编辑 4.着色器性能分析工具 5.着色器编译 6.异步着色器的编译工作原理 7.内置 ...
- unity自发光透明shader
unity自发光透明shader 这本来是一个glass的shader,但是我发现也可以用到自发光+透明,这两个脚本都是unity文档里面的.呵呵~~~ [html] view plaincopypr ...
最新文章
- oracle将213变成123,oracle 转换函数
- js正则匹配闭合标签_正则匹配闭合HTML标签(支持嵌套)
- android打开系统前置摄像头驱动,android 调用系统前置摄像头
- java mysql存储图片_Java存储图片到Mysql
- JAVA语言基础-面向对象(IO:IO字节流)
- 最全java面试题及答案(208道)
- python保存快捷键是什么_python常用快捷键
- IDEA Springboot docker 构建项目
- oracle dbms_lob trim,DBMS_LOB
- android xposed 简书,Xposed 入坑篇
- linux下下载fnl数据,方便大家下载fnl
- SAP中的外币评估记账与正常记账有何区别?
- 学计算机有作业吗,有没有电脑高手,大学计算机专业的作业
- EOS智能合约开发系列(16): deferred action与inline action
- SAP MM 公司间STO外向交货单SPED输出报错 - PO### does not contain a confirmation control key -
- IAR_EW430 的使用
- 31 SpringBoot多环境的切换(生产环境、开发环境、测试环境)
- 【汇编综合应用】大小写字母的转换、2号、9号和10号DOS系统功能调用、分支、循环程序结构、子程序、寄存器传递参数,宏定义、宏调用,观察宏展开。
- 任意长度的python列表_任意长度的Python列表、元组和字符串中最后一个元素的索引为...
- 治愈大量患者,荣获一致认可