Unity中Shader光强与环境色

2023-10-09 01:52
文章标签 环境 unity shader 光强

本文主要是介绍Unity中Shader光强与环境色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、实现下图中的小球接受环境光照
    • 实现思路
    • 1、在Pass中使用前向渲染模式
    • 2、使用系统变量 _LightColor0 获取场景中的主平行灯
  • 二、返回环境中主环境光的rgb固定a(亮度),小球亮度还随之改变的原因
  • 三、获取Unity中的环境光的颜色
    • 1、Color模式下的


前言

Unity中Shader的光强与环境色


一、实现下图中的小球接受环境光照

在这里插入图片描述

实现思路

1、首先使用前向渲染模式
2、获取到场景中的灯

1、在Pass中使用前向渲染模式

Tags{“LightMode”=“ForwardBase”}

2、使用系统变量 _LightColor0 获取场景中的主平行灯

_LightColor0
主平行灯的颜色值,rgb = 颜色x亮度; a = 亮度

需要引用 Lighting.cginc

测试代码:

Shader "MyShader/P1_5_2"
{Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{Tags { "RenderType"="Opaque" }Pass{Tags{"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#include "Lighting.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{return _LightColor0;}ENDCG}}
}

效果:
请添加图片描述

二、返回环境中主环境光的rgb固定a(亮度),小球亮度还随之改变的原因

当我们在片元着色器结果处返回 fixed4(_LightColor0.rgb,1)这个结果时,会发现,小球的亮度还是会随着主环境光的亮度改变而改变

return fixed4(_LightColor0.rgb,1);

请添加图片描述

在这里插入图片描述

由上图 FrameDebugger调试数据可得
原因是: _LightColor0中的 rgb 值,不是单纯的rgb颜色,而是一个与 a(亮度)相乘后的结果。

三、获取Unity中的环境光的颜色

在这里插入图片描述

unity_AmbientSky — 环境光(Gradient)中的Sky Color.
unity_AmbientEquator — 环境光(Gradient)中的Equator Color.
unity_AmbientGround — 环境光(Gradient)中的Ground Color.
UNITY_LIGHTMODEL_AMBIENT — 环境光(Color)中的颜色,等同于环境光(Gradient)中的Sky Color.

1、Color模式下的

在这里插入图片描述
获取到 unity_AmbientSky ,与LightColor0 相乘后输出测试
测试效果:
请添加图片描述

2、Gradient模式下的
在这里插入图片描述
分别与这三个 一 一 对应
unity_AmbientSky — 环境光(Gradient)中的Sky Color.
unity_AmbientEquator — 环境光(Gradient)中的Equator Color.
unity_AmbientGround — 环境光(Gradient)中的Ground Color.

这篇关于Unity中Shader光强与环境色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169510

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源