精华内容
下载资源
问答
  • 盛开 Bloom是一个c ++游戏引擎。
  • bloom

    千次阅读 2010-04-07 13:12:00
    bloom也能实现和HDR类似的效果,但bloom的是静态的,HDR是动态渐变的, bloom在细节表现、明暗对比不如HDR,但实现HDR效果的系统...其实,从游戏表现出的画面效果来看,两者的差别不是很大,但是他们的技术成分就相

    bloom也能实现和HDR类似的效果,但bloom的是静态的,HDR是动态渐变的,

      bloom在细节表现、明暗对比不如HDR,但实现HDR效果的系统资源开销也比

      bloom大,bloom也可以认为是劣等HDR.

      bloom和HDR效果的区别和关系

      现在很多玩家在争论HDR和bloom效果的区别。其实,从游戏表现出的画面效果来看,两者的差别不是很大,但是他们的技术成分就相差千里。今年年初,有国外玩家制作了一个《半条命2》的MOD,能够模拟出HDR效果,注意,这仅是模拟,这个MOD实现的特效与bloom效果差别不大,几乎可以说就是bloom效果。那么HDR与bloom效果的差别到底在什么地方呢?

      第一,HDR效果就是超亮的光照与超暗的黑暗的某种结合,这个效果是光照产生的,强度、颜色等方面是游戏程序可动态控制的;bloom效果则是物体本身发出的光照,仅仅是将光照范围调高到过饱和,是游戏程序无法动态控制的。

      第二,bloom效果无需HDR就可以实现,但是bloom效果是很受限的,它只支持8位RGBA,而HDR最高支持到32位RGBA。

      第三,bloom效果的实现很简单,比如《半条命2》的MOD就是一个很小的很简单的MOD,而且bloom效果不受显卡的规格的限制,你甚至可以在TNT显卡上实现bloom效果(当然效果很差)!而HDR,必须是6XXX以上的显卡才能够实现,这里的HDR是指nVIDIA的HDR。这时有必要谈nVIDIA和ATI的显卡所实现的HDR,两者还是有区别的,具体区别就很专业了,总之从真实性表现来看,nVIDIA的显卡实现的HDR更好一些。HDR是nVIDIA提出的概念,从技术上来讲,ATI当然无法严格克隆nVIDIA的技术,所以ATI的HDR是另一种途径实现的尽可能接近的HDR,不能算“真”HDR,据传ATI的R520能够真正实现FP16 HDR。

      事实上,游戏开发商往往会将两种特效一起使用以达到一个最终的效果。两者的区别可以举一个最简单的例子:你在游戏中,从黑暗的房间中走到太阳地中,你眼前的景物会很刺眼,随后亮度会降低,完全就同现实中的情况一致。很神奇!这就是HDR特效的威力。而bloom效果实现的光照强度可能不会很真实,同时也是不可变的。

      例如:极品飞车9即使用bloom而非HDR

    展开全文
  • 游戏中的辉光效果实现Bloom效果的实现最简单的实现使用Mask蒙版的Bloom对屏幕显示时使用对场景本身的有选择Bloom效果说这么多,不如动手画。小总结 链接: 图形 4.1 Bloom算法 游戏中的辉光效果实现. Bloom效果的实现...

    链接: 图形 4.1 Bloom算法 游戏中的辉光效果实现.

    Bloom效果的实现

    原图:没有Bloom效果的图片
    在这里插入图片描述

    最简单的实现

    在这里插入图片描述
    实现原理:如笔记所说,提取原图像,给定一个阈值,使用高斯模糊阈值范围上的图像。再与原图相加,获得bloom效果

    代码查看:

    使用Mask蒙版的Bloom

    对屏幕显示时使用

    实现方式:普通Bloom中挂载在摄像机的脚本会用来计算高斯模糊,挂在脚本上的shader用来渲染图像。因此,只要在摄像机的Bloom脚本中添加Mask蒙版。同时在Shader上添加Mask贴图位置并计算即可。
    **效果:**这里使用原图的红通道作为蒙版,可以看出,效果时比较明显(但不好看)
    **缺点:**不能随时调整图像。对
    在这里插入图片描述
    使用左黑右白贴图作为蒙版
    在这里插入图片描述

    对场景本身的有选择Bloom效果

    因为现在只是一个面片,所以不好表现多物体有前后强落对比时候的提供使用屏幕深度图做为蒙版,或者使用alpha(透明物体的Bloom效果应该更强),选择性的表现Bloom效果。
    使用Alpha的例子:
    在这里插入图片描述

    Alt
    链接: Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码).

    说这么多,不如动手画。

    在之前链接: 几何细分着色器.里有写过一个通过屏幕绘制的方式只做mask。理论上也时可以套用,就是脚本太多出现套娃情况,对一个代码苦手(ctrl+c+v玩家),整理起来有点困难啊。
    过去的案例
    在这里插入图片描述

    小总结

    bloom效果太好用了,本身的迷离感与幻想感很容易在作品中被过量使用。虽然现在还存在性能上的问题。但未来会成为手机游戏的常用效果(已经是了)。总的来看,效果是复制美术表示的技术手段,在学习时候也看出已经在脚本上遇到越来越多问题。之后需要相同学习一波

    一条看完BloomMask(看答疑后总结)

    使用Alpha值计算

    链接: 利用alpha值(0或1)来选取bloom的区域.
    请添加图片描述
    补充::Gold Ray也在链接中,使用径向模糊

    使用SRP创建BloomMask

    链接: ScriptableRenderPass创建BloomMask.
    这个是比较推荐的方法,因为要是使用alpha通道作为BloomMask,对美术资产制作是多一个步骤,同时,当资源数量特别庞大以后,对整个优化也有很大影响。

    使用Command Buffer

    链接: Command Buffer创建BloomMask.
    ·通常bloom作为后期处理作用在相机上,但是,摄像机的纹理是管道中已经发生的所有渲染的融合

    ·为了在渲染管线中获得关于像素的更多信息,我们需要将该像素的信息编码到缓冲区中

    ·因此我们需要将我们想要实现发光的对象到一个缓冲区中,当需要实现bloom效果时,只需要读我们的glow buffer,模糊我们想要实现bloom效果的像素

    结论:没有SRP时候可以考虑使用

    直接使用贴图贴在屏幕上

    常用于二维游戏,但缺少拓展性,看情况使用,何必绕一大圈(安慰自己。。)

    展开全文
  • 游戏的后期特效(PostProcessing)中,有2个最常见的后期。Color Grading(调色) 和 Bloom(泛光/辉光)unity中的PostProcessing字典里Bloom有绽放,开花等意思。而Bloom放在后期特效中,便是实现光线绽放,灯光...

    b5e0bc9f8992c3b8e5b94cdd24861568.png

    你们的评论点赞是我更新的动力啊!!!多点赞评论啊!求你们了!

    4c3e491819078aec4d870c95aef278dc.png

    在游戏的后期特效(PostProcessing)中,有2个最常见的后期。

    Color Grading(调色) 和 Bloom(泛光/辉光)

    dffef3e02197e9c893dbf972025846e3.png
    unity中的PostProcessing

    字典里Bloom有绽放,开花等意思。

    而Bloom放在后期特效中,便是实现光线绽放,灯光溢出的效果。

    Bloom能调整的参数很少,无外乎强度,范围,阈值等。和Color Grading比起来,复杂程度简直一个天一个地。简单的Bloom,原理并不是所有人都清楚。

    好的,简介到此为止,正文开始

    |为什么要谈论Bloom

    之前无意中和群友讨论到Bloom,发现大家对此持有不同理解,有些人对HDR,Bloom,感光度,人眼等概念有些混淆。

    而且搜索了各地,也没找到能清晰易懂解释Bloom的文章。

    于是在讨论过后,结合自己的认识,写下了这篇文章。

    |为什么会有Bloom

    图片常见格式有jpg,png等,这类图片我们称为LDR(低动态范围图像)。这类图片只能记录RGB 0-255,对应0-1。也就是说,RGB只在0-1之间的图片,称为LDR。相反,如果图片能低于0或高于1,我们称之为HDR(高动态范围图像)。能存HDR的图片格式有hdr/tif/exr等。

    • 思考一下,我们的真实世界是一个色彩无限丰富的HDR世界。
    • 我们常用的显示器,手机,摄像机等设备,不管输入还是输出,信息几乎是LDR。

    bf31bc2064c78ec903046e511760a994.png

    超出LDR的颜色,在照片中存储不到,所以就直接曝成纯色。

    • 眼睛与相机成像方式相同,可以看作自动档的相机。

    眼睛内存在有 锥体/棒体 两种感光细胞,分别对 亮/暗 更敏感。在黑暗的室内猛然看向窗户,会看到一个全白的户外,注视一段时间才缓缓恢复,这便是两种感光细胞在切换工作。

    关于眼睛对亮度的反应,还有一个叫 白亮度阈 黑亮度阈 的东西。有兴趣的可以了解一下。

    |Bloom为什么会溢出

    64d86c0681aa3b037cf4dace4604659a.png
    炎炎消防队中的截图

    溢出情况有两种,灰尘反光(左),直视强光导致溢出(右)。

    左边是纯粹的丁达尔效果,课本上学过,这里不再细说。

    重点在右边。强光。

    其他参数不变,只增加曝光时间。我用手机拍下了下列图。可以看出bloom效果越来越强,并且从第一张圆形的光斑变成了后面放射线一样的光斑。

    cfe075c0a5fc200f4f1c673bda9385cc.png
    第一张是自动曝光,后面手动增加曝光时间

    照片成像,莫过于通过镜头的光子打在胶片上。曝光时间越长,打在胶片上的光子也越多。见过底片的人应该都知道,底片会在感光的地方会发生化学反应,然后洗掉未反应的地方。同理电子相机也是光子打在感光组件上。

    但是灰尘,镜头的细微不平整。许多因素导致了光子不会如理想状态,正好打成一个圆形。再加上胶片与手机感光元件,都没有那么高的精度,光子会向周围溢出。随着曝光时间增长,bloom就会出现。

    反过来,如果使劲减少曝光时间,是不是就不会出现bloom效果?

    398aaf77a9e4f78de6c287a1c8fe4c47.png
    手机的最低极限

    答案是可以的。破手机最低只能到这种程度,但我相信如果设备足够好,绝对能把闪光灯里面纹路都拍得一清二楚。

    |为什么Bloom会有不同形状

    镜头的形状。

    手机一般是圆形,摄像机有些是六边形。

    最有意思的是眼睛。混乱博物馆的“鲁本斯为何画这三颗星”中曾说过,肉眼在前后各有一个人形的分叉,形成出的光斑是偶数根线条形状。

    做过散瞳验光的小伙伴应该深有体会,满眼的bloom效果。

    |Bloom在游戏中的应用

    Bloom可以说是3D游戏中必不可少的后期效果。

    一道光打在box上,哪怕有100强度,显示出来最高也只有纯白。只有当你打开bloom,才会发现他溢出来多少光。

    这一点在游戏特效上尤其明显。技能都是些火啊电啊,再不济也是个透明发光体,一旦去掉bloom,你会发现这就是些会动的贴图在一个片上面飘,效果大打折扣。

    一个合适的Bloom可以为最终效果加不少分。

    |最后一点牢骚

    我感觉现在游戏画面制作的写实效果,并非参照肉眼效果,而是电影拍摄。调色用aces,模拟手持镜头的人物走动摇晃,现在说的bloom等等。

    这是我在做VR漫游时发现的,对着屏幕,你感觉自己是控制屏幕中的角色在运动。你对比的是电影与游戏。

    但带上VR头盔,脑认为你在VR世界中控制自己,这就导致你改为对比肉眼与游戏中的效果。许多电影中的用到的技巧将不再适用。


    下面是我的artstation地址:

    https://www.artstation.com/luteli​www.artstation.com

    当然你也能看看我原来写的文章

    知乎用户​www.zhihu.com
    71cee87f46a84f3a40fce2b4089a3ebc.png

    如需转载请与作者联系并标注作者名字和原始网址

    展开全文
  • 原文在《游戏编程精粹2》的1.2中,BloomFilter是一种可以快速检测是否存在集合包含关系的数据结构,但有一定的误识别率。   该结构的优点 判断包含关系时效率较高,粗略测试了下比List快一倍(不拆分哈希) 由于内部...

    原文在《游戏编程精粹2》的1.2中,BloomFilter是一种可以快速检测是否存在集合包含关系的数据结构,但有一定的误识别率。

     

    该结构的优点

    • 判断包含关系时效率较高,粗略测试了下比List快一倍(不拆分哈希)
    • 由于内部是位数组BitArray,做交集并集几乎不产生开销

     

    该结构的缺点

    • 有一定的误识别率
    • 使用情境有限

     

     

    我在Github找了一个BloomFilter的库(这个库使用时会产生大量GC,但学习来用够了):

    https://github.com/joeyrobert/bloomfilter

     

    首先构建一个长度为N的位数组,将传入数据的哈希值按位拆分成不同段,每一个段作为一个Key放入这个长度为N的位数组。

    判断包含时再把对象的多个key与位数组进行比较即可。

     

    当然既然都存在误判率,而且是以效率为优先的话,也可以不按位拆分哈希,我写了一个最简单的版本:

    public class MyBloomFilter<T>
    {
        BitArray mBitArray;
    
    
        public MyBloomFilter(int bitLength)
        {
            mBitArray = new BitArray(bitLength);
        }
    
        public void Add(T obj)
        {
            var key = Mathf.Abs(obj.GetHashCode()) % mBitArray.Length;
    
            mBitArray[key] = true;
        }
    
        public bool Contains(T obj)
        {
            var key = Mathf.Abs(obj.GetHashCode()) % mBitArray.Length;
            return mBitArray[key];
        }
    }

     

    注意C#已经内置了位数组这样的数据结构BitArray。

     

    结合之前的可预测随机数(http://www.cnblogs.com/hont/p/8716586.html),我写了这样一个例子

    假设这是一个草药采集的功能,每一个不同颜色的方块代表一颗草药

    鼠标点击来采集它们。

     

    代码如下

    using System.Collections.Generic;
    using UnityEngine;
    
    public class HerbGenerator : MonoBehaviour
    {
        public int x;
        public int y;
        public int probability = 70;
        List<HerbObject> mCreatedHerbList = new List<HerbObject>();
        MyBloomFilter<int> mCollectedHerbList = new MyBloomFilter<int>(64);
    
    
        void Update()
        {
            GetArea(x - 3, y - 3, x + 3, y + 3);
    
            if (Input.GetMouseButtonDown(0))
            {
                var hit = default(RaycastHit);
                var isHit = Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit);
                if (isHit)
                {
                    var herbObject = hit.transform.GetComponent<HerbObject>();
                    mCollectedHerbList.Add(herbObject.seed);
    
                    Destroy(hit.transform.gameObject);
                }
            }
        }
    
        void GetArea(int beginX, int beginY, int endX, int endY)
        {
            for (int i = 0; i < mCreatedHerbList.Count; i++)
            {
                if (!mCreatedHerbList[i]) continue;
                Destroy(mCreatedHerbList[i].gameObject);
            }
    
            var cacheState = Random.state;
    
            mCreatedHerbList.Clear();
    
            float spacingScale = 1f;//增加间距防止两颗草药同时消失.
            for (int x = beginX, k = 0; x < endX; x++)
            {
                for (int y = beginY; y < endY; y++, k++)
                {
                    var seed = 1000 + x + y * (endX - beginX);
    
                    if (mCollectedHerbList.Contains(seed)) continue;
    
                    Random.InitState(seed);
                    var r = (int)(Random.value * 100);
    
                    if (r % 100 < probability)
                    {
                        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
                        var herbObject = cube.AddComponent<HerbObject>();
                        herbObject.seed = seed;
    
                        cube.transform.position = new Vector3(x * spacingScale, 0, y * spacingScale);
    
                        GalaxyBuild(r, cube);
    
                        mCreatedHerbList.Add(herbObject);
                    }
                }
            }
    
            Random.state = cacheState;
        }
    
        void GalaxyBuild(int seed, GameObject go)
        {
            var cacheState = Random.state;
            Random.InitState(seed);
            var meshRenderer = go.GetComponent<MeshRenderer>();
            switch ((int)(Random.value * 100 % 3))
            {
                case 0://草药类型1
                    meshRenderer.material.color = Color.red;
                    break;
    
                case 1://草药类型2
                    meshRenderer.material.color = Color.blue;
                    break;
    
                case 2://草药类型3
                    meshRenderer.material.color = Color.green;
                    break;
            }
    
            Random.state = cacheState;
        }
    }
    HerbGenerator

     

     

    出现误判时会发生A草药采完后B草药同时消失的情况,只能增加草药刷新的间距来缓解这个问题。

    展开全文
  • 一批特效的插件,还是很好用的,可以看看。unity3d 游戏特效插件 粒子 SE Natural Bloom & Dirty Lens
  • bloom 效果

    千次阅读 2008-03-25 21:07:00
    前段时间给游戏加的bloom效果,看上去挺不错的,截两张图来晒晒 效果开起前开启bloom效果
  • Bloom 将布鲁姆添加到场景中可以真正销售照明模型的幻觉。发光物体更可信,镜面高光得到额外的微光。 //… int size = 5; float separation = 3; float threshold = 0.4; float amount = 1; // … 这些参数控制外观...
  • Bloom,又称“全屏泛光”,是大名鼎鼎的虚幻3游戏引擎中最通用的后期特效技术~ Bloom特效的实现主要依赖于PostProcess框架,即实时绘制当前场景到一后台渲染表面,而后针对其对应贴图进行像素级渲染~ 大家还记得...
  • bloom特效

    2013-04-07 23:24:00
    由于之前在各种场合看到别人贴出的bloom特效做的图片,一开始还以为是用的HDR技术,后来一研究才发现绝大部分都仅仅是一个bloom特效而已,遂打算学习一番。其实bloom是一个非常简单的后期图像处理过程,之所以称其为...
  • 效果介绍原图:高斯模糊图:Bloom效果图: 从上面三张图可以直观的看出模糊效果和bloom效果带来的视觉差异,模糊效果可以理解为打了马赛克,至于马赛克的精细程度根据参数可以调节,Bloom效果就是当光线比较亮的...
  • OpenGL核心技术之Bloom

    千次阅读 2017-03-07 21:04:39
    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;...Bloom泛光在游戏中使用非常广泛,这个也是衡量引擎渲染能力的一个指标,Bloom泛光渲染是...
  • HLSL的bloom特效

    2010-03-10 20:56:30
    基于HLSL的bloom特效(全屏泛光),是目前游戏中常见的后期处理技术,从视觉上基本取代了HDR光照。是目前很少有的DX+HLSL版本哦!
  • Bloom 未完成

    2020-07-13 22:11:16
    openGL高级光照部分目录见openGL高级光照部分目录 种方法是使其发光;然后光线在光源周围流动。...当以一种微妙的方式完成时(有些游戏根本无法做到),Bloom会显著提高场景的照明度,并允许产生大量的戏剧性效果。 ..
  • 聊聊引擎底层如何实现Bloom渲染算法

    千次阅读 2019-01-03 15:39:36
    Bloom渲染是游戏中常用的,在Unity和UE4中也有Bloom渲染算法如果我们自己实现Bloom渲染算法,该如何实现呢?网上关于Bloom的实现算法讲述的也比较多,但是我们本篇实现的Bloom渲染算法相对来说比较简单,但是效果也...
  • 溶解效果在游戏中十分常见,然而普通的溶解效果往往并不好看,本文将实现一种基于边缘bloom的溶解效果的实现 先上最终效果图 整体思路:将溶解的边缘提取出来,bloom之后再与原图像混合。 首先我们实现一下最基础...
  • 手机上Bloom效果trick

    千次阅读 2017-05-15 20:07:57
    不过绝大部分游戏bloom效果都是那种全屏大部分地方都泛光,造成整个画面过曝以及模糊,虽然这种效果应用在偏向卡通渲染的画面上看起来还是挺不错的,而且也符合国人喜欢的“特效就是要亮瞎人狗眼”的画风,咳咳。...
  • 文章目录Bloom原理Blur流程详解引用 Bloom原理 本文主要参考 ...在游戏中的Bloom的流程如图所示 Blur流程详解 参考[2],圆对称的2d高斯核是可以线性分解的,高斯核可以被分解为水平
  • 也来分析BloomFilter

    2021-08-14 23:42:53
    BloomFilter是在1970由Burton Howard Bloom发表。也因此,方法名上带了Burton Bloom先生的名字Bloom,通常我们称为这个方法布隆过滤器。
  • Bloom 辉光 后期处理系列2

    千次阅读 2019-01-08 15:30:13
    Bloom 辉光 本文档主要是对Unity官方手册的个人理解与总结(其实以翻译记录为主:&amp;gt;) 仅作为个人学习使用,不得作为商业用途,欢迎转载,并请注明出处。 文章中涉及到的操作都是基于Unity2018.3版本 ...
  • bloom泛光特效

    千次阅读 2013-12-23 17:02:27
    bloom (4.0 HDR ,Lens Flares)泛光特效   泛光可以理解为是一种增强版辉光,光晕的效果。泛光的效果能在增加光晕的同时自动添加高效能镜头炫光,光晕是一个非常独特的效果,在HDR(高动态光照渲染)渲染的情况下...
  • Physics CG:高斯Bloom

    2019-05-18 09:10:34
    bloom效果属于场景后期美化特效最常用而且最好用的,我记得以前做unity的时候,那个年代基本上就没有很好的场景美化规范和教程,所以市面上整体做出来的游戏或者软件场景原始效果相比现在都很差。毕竟那时候PBR渲染...
  • irrlicht引擎:Bloom效果

    2016-05-19 17:19:32
    先上图,再说点别的。 BLOOMBLOOM关 在IRRLICHT中实现BLOOM,和其它...关于BLOOM的算法,也就那样了,没有特别之处,况且,我这BLOOM很暴力 render scene to texture. 1/4 downsample 选择暴光像素 h_blur...
  • Unity-后期处理效果之Bloom

    千次阅读 2020-06-17 11:04:58
    Bloom是一种游戏常见的一种屏幕效果叫做高光溢出,是一种光学效果,其中来自明亮来源(如闪光)的光表现为泄露到周围对象中。通俗来说就是这种特效可以模拟真实摄像机的一种图像效果,他让画面中较亮的区域"扩散"到...
  • bloom(转)

    2012-10-09 11:31:00
    感谢原创者。 又称“全屏泛光”,是...Bloom特效的实现主要依赖于PostProcess框架,即实时绘制当前场景到一后台渲染表面,而后针对其对应贴图进行像素级渲染~ 大家还记得我们之前实现的水面效果中的反射和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,476
精华内容 990
关键字:

bloom游戏