立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 359|回复: 0

[分享] 聊一聊外发光和内发光

[复制链接]
发表于 2025-1-25 17:16 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
前言

如题所示,本篇内容主要聊一聊外发光和内发光。
下面我们用简单的内发光和外发光来做个小太阳。
首先我们来分析下实现原理。
实现原理


  • 外发光

  • 常用做法跟描边非常近似,在顶点着色器中将模型顶点坐标延法线方向延申
  • 视角与法线点乘,产生中间向四周逐渐衰减到0的值,赋给透明通道,形成光晕效果


  • 内发光

  • 跟外发光很类似,计算世界空间的观察方向,将观察方向和法线向量传到片元着色器
  • 视角与法线点乘,产生中间向四周逐渐衰减到0的值,后1-点乘结果来叠加发光颜色,形成边缘光晕
具体实现


  • 外发光核心代码



外发光


  • 内发光核心代码



  • 具体表现如下



效果图

注意事项


  • 外发光在叠加的时候记得关闭 深度写入 不然会出现下图的情况


2.外发光在应用到存在硬边的情况下会出现如下情况



小人外发光出问题了

这种问题有点像之前描边出现的问题。
可以考虑用模型坐标外拓,或者参考一下描边插件的做法来实现,插件的做法一般都是结合后处理来实现的,具体我们后面再写一篇高级发光来解析下他们的实现原理。
最后附带下我常用的发光插件:
Highlighting System
MK Glow
Highlight Plus



原文地址:https://zhuanlan.zhihu.com/p/112686428
楼主热帖
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表