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自学日志】星球大气效果相关推荐

  1. 3dmax:3dmax经典案例详细步骤图文教程之环境特效大气效果体积雾效果

    3dmax:3dmax经典案例详细步骤图文教程之环境特效大气效果体积雾效果 目录 环境特效大气效果体积雾效果 环境特效大气效果体积雾效果

  2. DirectX 9.0c游戏开发手记之RPG编程自学日志之1 : 开场白

            本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com RPG,一个响亮的名字!从古至今,有多少英雄儿女为之竞折腰! "什么?!你要学习RPG ...

  3. 类似愤怒小鸟的星球引力效果

     在Unity中的物理学: 有一个真实的物理行为,你的游戏对象一定受到碰撞. 重力和各种其他力的影响.为模拟此物理功能是由Unity的物理引擎提供的主要功能之一(虽然很多大的项目都不是用它). 重 ...

  4. python box2d模拟平抛运动_论述如何基于Box2D模拟星球重力效果

    作者:Emanuele Feronato 随着<Angry Birds Space>的问世,我想你定非常疑惑要如何通过Box2D模拟星球重力. 基本原理非常简单. 首先,太空没有重力,所以 ...

  5. VUE自学日志05-计算属性和侦听器

    ## 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如,有一个嵌套数组对象: Vue.createApp({data() {re ...

  6. Mybatis自学日志04(日志工厂)

    日志工厂 如果一个数据库操作出现异常,日志就只最好的助手. LOG4J 标准日志 <settings><setting name="logImpl" value= ...

  7. Mybatis自学日志03(LOG4J,注解)

    什么是LOG4J? Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog ...

  8. 菜鸟的Unity自学日志10 音频

    第十天 前言 Unity音频入门 工作方式 添加Non-diegetic sound Setp 1 background music Step 2 Step 3 修改GameEnding脚本 Step ...

  9. UnityShader入门精要-透明效果

    实现透明效果的方法:1.透明度测试2.透明度混合 深度缓冲Z-buffer决定了哪个物体的那些部分会被渲染在前面,而哪些部分会被遮挡(比较距照相机的距离),渲染一个片元时需要把他的深度值与已经存在在深 ...

最新文章

  1. 刷题总结——愤怒的小鸟(NOIPDAY2T3)
  2. c++ lambda 重载_您会后悔对Lambdas应用重载!
  3. oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
  4. Python实现简单的人脸打卡系统
  5. 《转》python学习(7) -列表
  6. 6U_ VPX_ XC7VX690T_2TMS320C6678信号处理卡
  7. cad 选择框不是矩形 解决方法
  8. 基于Neo4j计算网络节点中心性(Closeness、betweenness Centrality)
  9. Android系统的系统运行库层,Android系统框架
  10. Excel排序与查重
  11. 骞云科技SmartCMP v3.0正式发布!
  12. Android通过gradle实现debug和release包名不同
  13. 记第一个完整的自动化测试脚本
  14. C程序设计语言(第2版)
  15. Cg学习记录003 之Varying参数
  16. [附源码]Java计算机毕业设计SSM电力公司员工安全培训系统
  17. git(9)Git 内部原理
  18. 《Swf文件的那些事》—as函数跨平台的交互详解
  19. Mellanox--MCX4121A-ACAT网卡驱动安装
  20. 【技术分享】数据之道 笃行拓新

热门文章

  1. 输出调节2.0——内模控制器概念及性质
  2. 5G工业路由器 千兆高速低延时
  3. 新媒体管理师详解,新媒体矩阵搭建不完全指南
  4. 7000字,详解仓湖一体架构!
  5. Bootstrap—实现圆角、圆形头像和响应式图片
  6. 刚入职场需要用到的5个顶尖自学网
  7. 【视频课】10大真实金融量化交易案例,20多小时Python进阶课!
  8. 给图片加水印--手把手教新码农如何把技术变成产品
  9. 孙玉 计算机教授,孙玉
  10. 中国手机充电器行业市场供需与战略研究报告