07 A Glimpse of Industrial Solutions
Posted etherovo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07 A Glimpse of Industrial Solutions相关的知识,希望对你有一定的参考价值。
1. Anti-Aliasing
1.1 Temporel Anti-Aliasing (TAA)
- 对于静止图像,每一帧的采样取像素内不同的区域,循环变化,下一帧复用上一帧的信息,考虑到递归,就会使得等效SSP变大。
- 对于运动物体,使用motion vector来查找。
- 如果出现遮挡等问题使得信息不可用,就采取相应的clamp等方法。
1.2 MSAA 与SSAA
- SSAA
- 使用更大的分辨率去做渲染,然后压小;可见开销很大
- MSAA
- 对采样的点,如果一个三角形只采到一个点就用该点shading,如果对一个三角形才到多个点则用这些点中间的点做shading;因此需要维护一张表,记录采样点的颜色和深度
- samples复用,将采样点放在邻近像素中间,就可以复用
1.3 Image based anti-alisaing solution
- FXAA->MLAA->SMAA(Enhanced subpixel morphological AA)
- 矢量化
1.4 G-Buffer不可以做反走样,否则就会失去意义
2. Temporal Super Resolution
2.1 DLSS
- 提升了分辨率,那么相应的细化的像素就难以找到上一帧的对应信息,不能直接clamp,容易糊掉。
- DLSS 2.0就提供了利用temporal的方法。
- 其他:
3. Shading
3.1 Deferred Shading 延迟渲染
- 光栅化时,如果从远到近做shading时,就需要对每个fragment做shading。
- 第一次光栅化不做shading,只更新depth buffer
- 第二次光栅化只对等于depth的部分做shading。
- 因为深度buffer不可以做AA,所以不能做aa,但是可以使用TAA或者图像方法。
3.2 Tiled Shading
- 把屏幕分割成小块,对每一块做shading,如此一来可以减少需要考虑光源的数量
- 因为光源在考虑立体角时会有平方反比的关系,所以可以假设每个光源都有自己的一个作用范围,如此一来不同的小块经过的光源范围数量是变少的,只需要渲染能影响到他的光源就可以了。
本文来自博客园,作者:ETHERovo,转载请注明原文链接:https://www.cnblogs.com/etherovo/p/17368324.html
如何使用 SqlBulkCopy 并通过 Glimpse 跟踪批量插入
【中文标题】如何使用 SqlBulkCopy 并通过 Glimpse 跟踪批量插入【英文标题】:How to use SqlBulkCopy and track Bulk Inserts with Glimpse 【发布时间】:2016-08-15 05:20:20 【问题描述】:在我们的应用程序中,我们使用SqlBulkCopy
类来促进数据库的批量加载。最近,我尝试将 Glimpse 添加到我们的解决方案中,但代码因无效转换而失败:
System.InvalidCastException:无法将“Glimpse.Ado.AlternateType.GlimpseDbConnection”类型的对象转换为“System.Data.SqlClient.SqlConnection”类型
这是因为 Glimpse ADO 正在使用包装的 SqlConnection
来实现其魔力。不幸的是,SqlBulkCopy
需要 SqlConnection
,所以我需要转换 DbConnection
。
是否没有开箱即用的方法来分析批量插入?到目前为止,我遇到的唯一解决方法是:
(SqlConnection)((GlimpseDbConnection)dbConnection).InnerConnection
这很丑,因为它需要显式引用 GlimpseDbConnection 并且可能还需要添加自定义时间线事件来获得一些跟踪。 没有 Glimpse 插件可以解决这个问题吗?
【问题讨论】:
我不知道有一个。 【参考方案1】:我正在使用这种方法(使用 EntityFramework 的 DbContext
),它似乎有效:
DbContext Db = /* ... */;
var glimpseDbConnection = Db.Database.Connection as GlimpseDbConnection;
var sqlConnection = glimpseDbConnection != null ? (SqlConnection)glimpseDbConnection.InnerConnection : (SqlConnection)Db.Database.Connection;
var glimpseDbTransaction = Db.Database.CurrentTransaction.UnderlyingTransaction as GlimpseDbTransaction;
var sqlTransaction = glimpseDbTransaction != null ? (SqlTransaction)glimpseDbTransaction.InnerTransaction : (SqlTransaction)Db.Database.CurrentTransaction.UnderlyingTransaction;
using (var bulkCopy = new SqlBulkCopy(sqlConnection, SqlBulkCopyOptions.Default, sqlTransaction))
var dataTable = /* ... */;
bulkCopy.BatchSize = 2000;
bulkCopy.BulkCopyTimeout = TimeSpan.FromMinutes(5).Seconds;
bulkCopy.DestinationTableName = /* ... */;
bulkCopy.WriteToServer(dataTable);
【讨论】:
以上是关于07 A Glimpse of Industrial Solutions的主要内容,如果未能解决你的问题,请参考以下文章
C++09: A Glimpse into the Future
fare|gave it away|catch a glimpse |involve|rip|eternalstiff|
如何使用 SqlBulkCopy 并通过 Glimpse 跟踪批量插入
在 Swift 中使用 Glimpse 时将文档目录指定为文件输出 URL
Multi-Decoder Attention Model with Embedding Glimpse for Solving Vehicle Routing Problems 学习笔记