运行结果如下:

【抗锯齿】

可以看到中间那个竖线的右侧从地面上看有款明显的锯齿,而左边就没有。包括球的反射出来的三角形和地面也有明显的锯齿。那么抗锯齿究竟本例中是怎么做的呢?

首先在采样时,当场景需要重绘时,我们此时定义场景为第0帧,在第0帧时我们绘制精确的有锯齿的场景,在随后的各帧中对其光线的方向增加一个[0, 1]的随机的扰动(因为光线是每个像素生成的,因此0到1之间的扰动真的很小又合适),生成轻微模糊的图像,然后再与上一帧按照权重进行叠加,就形成了虚化一些的反走样的图片。我们来看实际代码:

RT_PROGRAM void pinhole_camera()
{
//缓存尺寸,也就是屏幕尺寸
size_t2 screen = output_buffer.size();
//rtPrintf("%d-%d-", screen.x, screen.y);

unsigned int seed = tea<16>(screen.x*launch_index.y + launch_index.x, frame);
float2 subpixel_jitter = frame == 0 ? make_float2(0.0f, 0.0f) : make_float2(rnd(seed) - 0.5f, rnd(seed) - 0.5f);

//左右分窗做对比
if (launch_index.x > screen.x / 2)
{
subpixel_jitter = make_float2(0);
}

float2 d = (make_float2(launch_index) + subpixel_jitter)/ make_float2(screen) * 2.f - 1.f;
float3 ray_origin = eye;
float3 ray_direction = normalize(d.x*U + d.y*V + W);

//生成光线
optix::Ray ray(ray_origin, ray_direction, RADIANCE_RAY_TYPE, scene_epsilon);

PerRayData_radiance prd;
prd.importance = 1.f;
prd.depth = 0;

rtTrace(top_object, ray, prd);

float4 acc_val = accum_buffer[launch_index];
if (frame > 0)
{
acc_val = lerp(acc_val, make_float4(prd.result, 0.0f), 1.0f / static_cast<float>(frame + 1));
}
else
{
acc_val = make_float4(prd.result, 0.f);
}

if (launch_index.x == (screen.x / 2))
{
acc_val = make_float4(0);
}

//所有跟踪后,求得结果
output_buffer[launch_index] = make_color(make_float3(acc_val));

accum_buffer[launch_index] = acc_val;

---------------------

【OptiX】第5个示例 递归反射、抗锯齿的更多相关文章

  1. PHP合成图片、生成文字、居中对齐、画线、矩形、三角形、多边形、图片抗锯齿、不失真 高性能源码示例

    function generateImg($source, $text1, $text2, $text3, $font = './msyhbd.ttf') { $date = '' . date ( ...

  2. 【ShaderToy】抗锯齿相关函数

    *示例代码可以直接在ShaderToy中运行. *我放在这里咯ShaderToy基础学习中~欢迎交流(ノ>ω<)ノ 先上未抗锯齿的两个圆形图案,可以清楚看清图案边缘像素块,即“锯齿”. 附 ...

  3. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  4. DirectX11 With Windows SDK--40 抗锯齿:FXAA

    前言 在默认的情况下渲染,会看到物体的边缘会有强烈的锯齿感,究其原因在于采样不足.但是,尝试提升采样的SSAA会增大渲染的负担:而硬件MSAA与延迟渲染又不能协同工作.为此我们可以考虑使用后处理的方式 ...

  5. Android 抗锯齿的两种方法

    Android 抗锯齿的两种方法 (其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))   在Android中,目前,我知道有两种出现锯齿 ...

  6. Linux 下 netbeans 字体抗锯齿正解

    转自:http://leenjewel.blog.163.com/blog/static/601937922010124444051/ 说来这个不难,主要是我看网上有的写的不是很明确,甚至有的写的根本 ...

  7. CSS抗锯齿 font-smoothing 属性介绍

    CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...

  8. Unity抗锯齿

    Unity抗锯齿设置是针对模型,对模型的阴影的锯齿设置无效,不知道我这样的理解是否正确. 遇到的问题 而我是要对灯光照射在模型上产生的阴影进行抗锯齿,暂时还未研究出解决方案,希望知道的朋友告知一声. ...

  9. 106、抗锯齿方法paint.setAntiAlias(ture);paint.setFilterBitmap(true))

    在Android中,目前,我知道有两种出现锯齿的情况.  ① 当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿.  ② 在用View的RotateAnimation做动画时候 ...

随机推荐

  1. MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码

    void CSetSignalBoxDlg::OnBnClickedButtonGetbroadcastaddr() {       //凝视部分为还有一种获取IP方式,可略过 //char Name ...

  2. hdu oj 3127 WHUgirls(2009 Asia Wuhan Regional Contest Online)

    WHUgirls Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  3. IDEA启动Tomcat报错

    Maven编译成功, 可是启动Tomcat报错: Application Server was not connected before run configuration stop, reason: ...

  4. HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1

    Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  5. Woody的逻辑游戏--怎样换轮胎

    题目:有一个做长途运输的司机要出发了,他用作运输的车是三轮车.轮胎的寿命是2万里,如今他要进行5万里的长途运输.计划用8个轮胎完毕运输任务,如何才干做到呢? 首先将轮胎从1-8依次编号,然后例如以下所 ...

  6. Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】

    一.HTTP.HTTPS介绍 HTTP协议(超文本传输协议):一种发布.接收HTML页面的方法 HTTPS协议:简单讲是HTTP安全版,在HTTP下加入SSL层 SSL(安全套接层),用于WEB的安全 ...

  7. 洛谷 P1181,1182 数列分段Section

    数列分段Section I 题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格 ...

  8. 用C语言实现websocket服务器

    Websocket Echo Server Demo 背景 嵌入式设备的应用开发大都依靠C语言来完成,我去研究如何用c语言实现websocket服务器也是为了在嵌入式设备中实现一个ip camera的 ...

  9. BZOJ_1584_[Usaco2009 Mar]Cleaning Up 打扫卫生_DP

    BZOJ_1584_[Usaco2009 Mar]Cleaning Up 打扫卫生_DP Description 有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= ...

  10. activity工作流表结构分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository( ...