【UnityShader自学日志】星球大气效果
1、创建一个“Planet”着色器
2、在Properties代码块中删除_Metallic和_Glossiness所在的两行,在surf函数中删除Glossiness和Metallic所在的两行(因为大气着色器不需要金属光泽和平滑度两个材质属性)
3、为大气着色器添加厚度、颜色和不透明度三个属性
在Properties代码块中添加下面两行
_Thickness ("Thickness", Range(-1, 1)) = 0.5 //指定星球大气层的厚度
_AtomsColor ("Atomsphere Color", Color) = (1, 1, 1, 1) //指定大气层的颜色
4、添加第二遍渲染代码
Cull FrontCGPROGRAM#pragma surface surf Standard fullforwardshadows alpha vertex:vertstruct Input {float2 uv_MainTex;};//添加大气层厚度float _Thickness;void vert(inout appdata_full v) {v.vertex.xyz += v.normal * _Thickness;}fixed4 _AtomsColor;//着色器大气颜色_AtomsColor的值作为反光值输出void surf(Input IN, inout SurfaceOutputStandard o) {o.Albedo = _AtomsColor.rgb;o.Alpha = _AtomsColor.a;}ENDCG
完整代码如下
Shader "PACKT/Planet_falloff" {Properties {_Color ("Color", Color) = (1,1,1,1)_MainTex ("Albedo (RGB)", 2D) = "white" {}_Thickness ("Thickness", Range(-1, 1)) = 0.5 //指定星球大气层的厚度_AtomsColor ("Atomsphere Color", Color) = (1, 1, 1, 1) //指定大气层的颜色}SubShader {Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types#pragma surface surf Standard fullforwardshadows// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;struct Input {float2 uv_MainTex;};fixed4 _Color;void surf (Input IN, inout SurfaceOutputStandard o) {// Albedo comes from a texture tinted by colorfixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;o.Albedo = c.rgb;o.Alpha = c.a;}ENDCGCull FrontCGPROGRAM#pragma surface surf Standard fullforwardshadows alpha vertex:vertstruct Input {float2 uv_MainTex;};float _Thickness;void vert(inout appdata_full v) {v.vertex.xyz += v.normal * _Thickness;}fixed4 _AtomsColor;void surf(Input IN, inout SurfaceOutputStandard o) {o.Albedo = _AtomsColor.rgb;o.Alpha = _AtomsColor.a;}ENDCG}FallBack "Diffuse"
}
【UnityShader自学日志】星球大气效果相关推荐
- 3dmax:3dmax经典案例详细步骤图文教程之环境特效大气效果体积雾效果
3dmax:3dmax经典案例详细步骤图文教程之环境特效大气效果体积雾效果 目录 环境特效大气效果体积雾效果 环境特效大气效果体积雾效果
- DirectX 9.0c游戏开发手记之RPG编程自学日志之1 : 开场白
本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com RPG,一个响亮的名字!从古至今,有多少英雄儿女为之竞折腰! "什么?!你要学习RPG ...
- 类似愤怒小鸟的星球引力效果
在Unity中的物理学: 有一个真实的物理行为,你的游戏对象一定受到碰撞. 重力和各种其他力的影响.为模拟此物理功能是由Unity的物理引擎提供的主要功能之一(虽然很多大的项目都不是用它). 重 ...
- python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果
作者:Emanuele Feronato 随着<Angry Birds Space>的问世,我想你定非常疑惑要如何通过Box2D模拟星球重力. 基本原理非常简单. 首先,太空没有重力,所以 ...
- VUE自学日志05-计算属性和侦听器
## 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如,有一个嵌套数组对象: Vue.createApp({data() {re ...
- Mybatis自学日志04(日志工厂)
日志工厂 如果一个数据库操作出现异常,日志就只最好的助手. LOG4J 标准日志 <settings><setting name="logImpl" value= ...
- Mybatis自学日志03(LOG4J,注解)
什么是LOG4J? Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog ...
- 菜鸟的Unity自学日志10 音频
第十天 前言 Unity音频入门 工作方式 添加Non-diegetic sound Setp 1 background music Step 2 Step 3 修改GameEnding脚本 Step ...
- UnityShader入门精要-透明效果
实现透明效果的方法:1.透明度测试2.透明度混合 深度缓冲Z-buffer决定了哪个物体的那些部分会被渲染在前面,而哪些部分会被遮挡(比较距照相机的距离),渲染一个片元时需要把他的深度值与已经存在在深 ...
最新文章
- 刷题总结——愤怒的小鸟(NOIPDAY2T3)
- c++ lambda 重载_您会后悔对Lambdas应用重载!
- oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
- Python实现简单的人脸打卡系统
- 《转》python学习(7) -列表
- 6U_ VPX_ XC7VX690T_2TMS320C6678信号处理卡
- cad 选择框不是矩形 解决方法
- 基于Neo4j计算网络节点中心性(Closeness、betweenness Centrality)
- Android系统的系统运行库层,Android系统框架
- Excel排序与查重
- 骞云科技SmartCMP v3.0正式发布!
- Android通过gradle实现debug和release包名不同
- 记第一个完整的自动化测试脚本
- C程序设计语言(第2版)
- Cg学习记录003 之Varying参数
- [附源码]Java计算机毕业设计SSM电力公司员工安全培训系统
- git(9)Git 内部原理
- 《Swf文件的那些事》—as函数跨平台的交互详解
- Mellanox--MCX4121A-ACAT网卡驱动安装
- 【技术分享】数据之道 笃行拓新