2018.0.3f 里面directional light开了shadow 就会有一张updatedepth 如果距离远 没有阴影就没有shadow pass 但是updatedepth没有关掉 管线后面也没有对这张depth tex的引用 如果距离在实时阴影产生范围之内 会用screen space shadow updatedepth就是给screen space shadow用的 这里有些shit 开shadow的情况下 用camera.DepthTextureMode.NONE 并不能关…
第四部分讲一下如何在2D屏幕空间步进光线. http://casual-effects.blogspot.com/2014/08/screen-space-ray-tracing.html 中的代码感觉不太好理解,这里的代码是按照我自己的理解去重新实现的简单版,在效率上可能不如这个网址中的代码. 3D空间的光线步进 原本的实现中,我们得到光线后,将其在3D空间中进行步进,再投影到2D空间上.在投影过后,3D空间中均匀的采样点在2D空间中就不是均匀分布的了. (图来自 http://casual-…
unity用到了screen space shadow map 1.camera 在light pos 生成depth1 2.screen space depth2 3.根据depth1 depth2生成 screen space shadow 4.采样ssshadow 生成阴影 为什么要加这一步 per object 与per pixel的区别 可以降低overdraw 之前考虑的时候我忽视了一点 传统sm算法是每个receive shadow的物体 转到light space 算shadow…
http://www.crytek.com/cryengine/presentations/secrets-of-cryengine-3-graphics-technology 很多宝贝里面 不止题目那俩 soft alpha test不用msaa的话用后处理 screen space reflection用 ray tracing ******************************************* screen space reflection /real time loc…
目录 Reflective Shadow Maps(RSM) RSM 的重要性采样 RSM 的应用与缺陷 Screen Space Ambient Occulsion(SSAO) SSAO Blur Horizon Based Ambient Occlusion(HBAO) SSAO 的应用与缺陷 Screen Space Directional Occlusion(SSDO) SSDO 的应用与缺陷 Screen Space Reflection(SSR)/Screen Space Ray T…
traceRay函数 在上一篇中,我们有如下签名的traceRay函数 bool traceRay(float3 start, float3 direction, out float2 hitPixel, out float3 debugCol ) { } 其中的参数意义都很明了.start和direction是相机空间下的光线起点,以及光线方向. traceRay的核心代码并不复杂,如下: #define RAY_LENGTH 2.0 #define STEP_COUNT 64 //maxim…
作者:i_dovelemon 日期:2020-06-23 主题:Screen Space Planar Reflection, Compute Shader 引言 前段时间,同事发来一篇讲述特化版本的 Screen Space Reflection 实现 Planar Reflection 的文章.出于好奇,实验了下,看看效果如何.如下是目前实现出来的基础版本的效果: 原理 对于上图来说, Water Plane 表示水面,上半部分为实际场景的山体,下半部分为以水面为镜像进行反射之后的山体效果.…
本篇文章我会介绍一下我自己在Unity中实现的SSR效果 出发点是理解SSR效果的原理,因此最终效果不是非常完美的(代码都是够用就行),但是从学习的角度来说足以学习到SSR中的核心算法. 如果对核心算法没有兴趣,可以直接使用Unity官方的PostProcessing库,其中包含了一个SSR效果.(其实现来自于casual effects) 参考资料: https://github.com/Unity-Technologies/PostProcessing http://www.kode80.c…
SSSR进一步调优,对标寒霜级技术水平,实现方式为Direct3D 11+自主实现实时渲染引擎,方法为对比测试.实现已经有段时间了,还是简要更新下吧.以下画面中的SSSR效果全部采用1:4 resolves.如下4个图,全1080p,分别是:"全屏tracing+全屏resolve"(2个图) v.s. "1/4全屏trace+1/4全屏resolve" (2个图).为便于对比测试,特地没对反射效果加双边滤波.你觉得哪个效果棒?如果不看对比的话,你会接受1/4分辨率…
自从CE3首倡SSR以来,发展至今,其质量与当年早已不能同日而语.不仅强调超越性的质量,而且强调超越性的性能.乘着周末有空撸了撸,以下是增强型实时SSR结果图.与我原来的SSR原始实现相比,新的增强型实现采样数量 x 1/8,质量提升8x,在没有特别重度优化的前提下,1080p 1:4 resolve的单帧性能增量均值可控制在4ms上下(原始版本720p需要将近15ms...).…
还差通透度计算,RenderMonkey截图. 参考: http://developer.download.nvidia.com/presentations/2007/gdc/Advanced_Skin.pdf http://http.developer.nvidia.com/GPUGems/gpugems_ch16.html…
也许是哪里出了问题..效果一般 16采样点 Gird . Random 博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96  http://blog.csdn.net/wolf96…
Inspired by "Interactive Depth of Field Using Simulated Diffusion on a GPU" with heat diffusion for this problem. Keypoints are including, handle the inifinite depth, assign blank positions, remappling the range of CoC, better performance on sol…
本篇讲一下相交检测的优化.有两个措施. 线段相交检测 之前的检测都是检测光线的终点是否在物体内.我们可以尝试检测光线的线段是否与物体相交. 比如说有一个非常薄的物体,光线差不多垂直于它的表面.如果用普通的方法的话,这个平面可能就会被光线跳过了. 我们将一个像素的厚度看做一维数轴上的一条线段,起点是其深度.同时将光线的起点.终点的深度值也用同样的方法看做一条线段.此时我们去检测这两条线段是否有重合.有的话则证明相交. 用这种方法可以解决薄的物体被跳过的问题. bool intersect(floa…
之前在工作总汇总了shadowmap的各种问题 [工作积累] shadow map问题汇总 最近有点时间再仔细研究了shadowmap的一些算法.主要修复了LiSPSM(上面链接里后面有更新),实现了TSM和CSM阴影. 总的来说,CSM只是结构上的不同,多了拆分和几个pass,实现起来相对比较简单.比较花时间的是LiSPSM和TSM的调试.至于为什么要研究LiSPSM和TSM,主要是在不能使用CSM的时候(比如低配,mobile之类),可以有更好的效果.另外,CSM和LiSPSM.TSM并不冲…
原文网站:https://docs.unity3d.com/Manual/SinglePassStereoRenderingHoloLens.html Single-Pass Stereo Rendering for HoloLens HoloLens的单程立体渲染 There are two stereo rendering methods for Windows Holographic devices (HoloLens); multi-pass and single-pass instan…
什么是Deferred Shading Unity自身除了支持前向渲染之外,还支持延迟渲染.Unity的rendering path可以通过Edit/Project Settings中的Graphics进行全局设置: 除此之外,我们还可以在Main Camera中进行覆盖设置: 需要注意的是,Unity的延迟渲染不支持MSAA.具体原因可以参考[2]. 延迟渲染主要是为了解决前向渲染在多光源场景下效率低的问题,这里的延迟指的是将光照部分延迟到后面再进行计算.在前向渲染中,为了计算每个pixel的…
Reflective Shadow Maps是一种简单的GI,虽然名字带有Shadow Maps,但是和Shadow Maps没有什么关系,是在screen space的一种方法,不像光线追踪和辐射度方法一样又消耗,又费时,适合于动态的场景,我们主要需要的变量基本都来自G-buffer,如下图 从左到右依次为depth, world space coordinates, normal, flux.由于本算法简单,效果还不错,one-bounce的间接照明就足够了.算法很简单: Φp为需要反射的flux…
这两天勉勉强强把一个shadowmap的demo做出来了.参考资料多,苦头可不少.Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势.本篇是第一辑.——ZwqXin.comShadow Map的原理很简单,但是实现起来到处是雷.当然这只是我的体会.恩,不过就是“从光源处看场景,那些看不见的区域全部都该是阴影”.很容易看出,与针对 特定模型的Shadow Volume不同,Shadow Map是针对场景的.这就是说,对一个光源应用一次…
In the first scene or maybe the Main Menu scene of your game Create an Empty Gameobject. Call it whatever you like, for reference, I would call it as GO_LoadingScreen. Attach the script below to it: using UnityEngine; using System.Collections; public…
在制作游戏中我们经常会遇到这样一个需求: 在人物模型的上面显示 名字.称号 一类的文字或者图片 如下图 人物模型属于是Camera1   UI Title信息属于NGUI Camera2 如下图 这时候我们就要用到坐标转换了 确定UI Title 的世界坐标 代码如下: Transform charater = null;//角色Transform Transform TitleLabel = null;//Title Label Transform Camera camera1 = Camer…
这篇实现来的有点墨迹,前前后后折腾零碎的时间折腾了半个月才才实现一个基本的shadow map流程,只能说是对原理理解更深刻一些,但离实际应用估计还需要做很多优化.这篇文章大致分析下shadow map的基本原理.Unity中实现ShadowMap阴影方式以及一些有用的参考. 1 . Shadow Map 基本原理 基本的shadow Map 原理, 参考 "Unity基础(5) Shadow Map 概述". 其基本步骤如下: 从光源的视角渲染整个场景,获得Shadow Map 实际…
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB或LILO等启动程序调用之时传递给kernel. 3.在kernel运行时,修改/proc或/sys目录下的文件. 这里我简单讲的就是第二种方式了,kernel在grub中配置的启动参数. 首先,kernel有哪些参数呢? 在linux的源代码中,有这样的一个文档Documentation/kern…
https://docs.unity3d.com/Manual/SL-SurfaceShaders.html 说明: 注意下surfaceshader相关开关选项,input结构体全部可用参数 google搜不到surface shader alpha:blend的用法,就当没这个参数吧 注意下Code generation options 中说明了prepass就是legacy Deffred #pragma target 3.0    : 定义Shader模型为Shader Model 3.…
转自:https://dawnarc.com/2016/12/ue4%E4%BC%98%E5%8C%96%E5%BB%BA%E8%AE%AE%E4%B8%8E%E7%BB%8F%E9%AA%8C/ 内容都是处理项目问题的相关笔记,留给自己做备忘录,也分享出来让别人少走弯路. 零散记录 GPUProfile来统计性能消耗的时候,在editor模式下不是很准,因为编辑器的消耗也算进去了,如果要用,最好以Game模式来查看. UE4不支持640X480的分辨率,如果在这个分辨率下运行程序,会导致程序崩…
目录 6.5 Lumen 6.5.1 Lumen技术特性 6.5.1.1 表面缓存(Surface Cache) 6.5.1.2 屏幕追踪(Screen Tracing) 6.5.1.3 Lumen光线追踪 6.5.1.4 Lumen其它说明 6.5.2 Lumen渲染基础 6.5.2.1 FLumenCard 6.5.2.2 FLumenMeshCards 6.5.2.3 FLumenSceneData 6.5.3 Lumen数据构建 6.5.3.1 CardRepresentation 6.…
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB或LILO等启动程序调用之时传递给kernel. 3.在kernel运行时,修改/proc或/sys目录下的文件. 这里我简单讲的就是第二种方式了,kernel在grub中配置的启动参数. 首先,kernel有哪些参数呢? 在linux的源代码中,有这样的一个文档Documentation/kern…
[SIGGRAPH][最终幻想XV]的战斗场景实时演示的要点解说 原文:西川善司 http://www.4gamer.net/games/999/G999902/20160730004/       SIGGRAPH并不只是非实时的CG的学术会议.从2010年的SIGGRAPH 2010开始,也有了聚焦实时渲染技术的称作[Real-Time Live!]的活动.          在仅有的5分钟时间里,一边在实际演示的机器上运行程序,一边由演讲者进行解说,这个是Real-Time Live!活动…
转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2774 本系列的上一篇提到了KlayGE 4.4将会出现的高质量地形渲染.本篇仍讲一个新功能,Screen Space Sub Surface Scattering(SSSSS)和Translucency.这两个效果都是由团队成员石裕隆实现的. Sub Surface Scattering(SSS)对渲染效果的提升有很明显的左右,尤其是皮肤和植被之类物体.早在GPU Gems 1里就有在te…
转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2761   本系列的上一篇讲了DR中的一些改进.本篇开始将描述这个版本加入的新功能,高质量地形. 原有的地形 以前的地形实现和水面的方法一样,都是从Crytek在2008年的老方法改进而来.虽然比projected grid的好得多,并且速度很快,但有一些很明显的缺点: 视点移动的时候会抖动.水面比较平,而且有波浪看不出抖动.如果用来做静态地形抖动就会非常明显.尤其是far plane变大之…