首页 > 其他分享 >后期-抗锯齿化(Fxaa,Smaa,Mmaa)

后期-抗锯齿化(Fxaa,Smaa,Mmaa)

时间:2024-09-19 09:24:53浏览次数:4  
标签:采样 抗锯齿 pixelRatio Mmaa renderer Fxaa new true

概述

在 Three.js 中,有几种常见的抗锯齿方法:

MSAA(多重采样抗锯齿):这是一种较为常见的抗锯齿技术。通过在每个像素的多个采样点上进行采样和计算,来平滑边缘的锯齿效果。例如,使用 WebGLRenderer 时,可以通过设置 antialias: true 来启用默认的 MSAA 抗锯齿。

FXAA(快速近似抗锯齿):这是一种后处理抗锯齿方法,计算效率相对较高。它通过分析屏幕上的像素来平滑锯齿边缘。

SSAA(超级采样抗锯齿):这种方法会在更高的分辨率下进行渲染,然后再缩小到屏幕分辨率,从而达到抗锯齿的效果,但计算成本通常较高。

在实际应用中,需要根据项目的性能要求和效果需求来选择合适的抗锯齿方法。比如,如果对性能要求较高,可以优先考虑 FXAA;如果对画质要求苛刻,且硬件性能足够,SSAA 可能是一个选择。

启用抗锯齿

 renderer = new THREE.WebGLRenderer({
    antialias: true  // 启用抗锯齿
});

Fxaa

快速近似抗锯齿(英语:Fast ApproximateAnti-Aliasing,FXAA),由nVIDIA员工Timothy Lottes开发的一种反锯齿算法。

FXAA占用很少的资源,便可得到良好的反锯齿效果,因为它不是分析3D模型本身,而是分析像素。

import { FXAAShader,ShaderPass } from 'three/examples/jsm/Addons';

this.fxAAShader = new ShaderPass(FXAAShader);  
const pixelRatio = this.target.renderer.getPixelRatio();
this.fxAAShader.material.uniforms['resolution'].value.x = 1 / (this.target.dom.offsetWidth * pixelRatio);
this.fxAAShader.material.uniforms['resolution'].value.y = 1 / (this.target.dom.offsetHeight * pixelRatio);

this.effectComposer.addPass(this.fxAAShader)

/** 
  renderer.setPixelRatio(winddevicePixelRatioow.devicePixelRatio);
	pixelRatio == window.devicePixelRatio
	**/

注意

pixelRatio为窗口实际设别比例,1 / (this.target.dom.offsetWidth * pixelRatio) 不正确时画面出现遮挡的虚影层

Smaa (增强型子像素形态学抗锯齿))

import { SMAAPass } from 'three/addons/postprocessing/SMAAPass.js';

smaaPass = new SMAAPass( window.innerWidth * renderer.getPixelRatio(), window.innerHeight * renderer.getPixelRatio() );
composer.addPass( smaaPass );

Ssaa( 超级采样抗锯齿)

import { SSAARenderPass } from 'three/addons/postprocessing/SSAARenderPass.js';
ssaaRenderPass = new SSAARenderPass( scene, camera );
ssaaRenderPassP.sampleLevel = 1
ssaaRenderPassP.unbiased = true
ssaaRenderPassP.enabled = true

注意

sampleLevel 数值过大帧率过低

Msaa(多重采样抗锯齿 )

threejs 默认开启

 renderer = new THREE.WebGLRenderer({
    antialias: true  // 启用抗锯齿
}); 
质量 性能
msaa msaa
ssaa fxaa
fxaa smaa
msaa ssaa

推荐 msaa > fxaa > smaa > ssaa

标签:采样,抗锯齿,pixelRatio,Mmaa,renderer,Fxaa,new,true
From: https://www.cnblogs.com/rongzhu-blog/p/18419754

相关文章

  • 0198-增加抗锯齿
    环境Time2022-11-16WSL-Ubuntu22.04Rust1.65.0前言说明参考:https://raytracing.github.io/books/RayTracingInOneWeekend.html目标之前生成的版本,在交界处,能很明显看到锯齿,增加采样和抗锯齿。颜色显示函数pubfnformat_str(&self,samples:f64)->String{......
  • SA-GS,无需训练,直接鲁棒提升3D高斯抗锯齿能力
    论文作者:KevinS(作者授权)|编辑:3DCV添加微信:dddvision,备注:3D高斯,拉你入群。文末附行业细分群本文介绍了3DGS抗锯齿技术的最新进展——SA-GS。这是一种无需训练的高斯抗锯齿渲染技术,能够直接集成到现有的3D高斯模型中,从而鲁棒提升其在不同渲染设置下的抗锯齿能力。通过使用2......
  • 06 games101-光栅化(深度测试与抗锯齿)
    06光栅化(深度测试与抗锯齿)从采样分析走样采样的对象:●在位置上采样——照片●在时间上采样——视频以下副标题均是在时域上分析。采样的瑕疵(Artifacts)Artifacts(Erros/Mistakes/Inaccuracies)●锯齿●摩尔纹●车轮效应●…走样的原因信号频率太快,采样太......
  • Qt+opengl,开启抗锯齿
    MyOpenglWidget::MyOpenglWidget(QWidget*parent):QOpenGLWidget{parent}{auto&mysignal=MySignal::instance();//绘制和清空connect(&mysignal,&MySignal::drawSignal,this,[&](Shapeshape){drawShape(shape);});......
  • 抗锯齿显示
    protectedoverridevoidOnPaint(PaintEventArgse){base.OnPaint(e);Graphicsg=e.Graphics;g.SmoothingMode=SmoothingMode.HighQuality;//搞锯齿呈显Brushbrush=newSolidBrush(Color.Yellow);......
  • games101-2 透视深度插值矫正与抗锯齿分析
    透视深度插值矫正与抗锯齿分析深度插值的差错原因透视深度插值公式推导games101中的错误msaa与ssaa简要定义games101中ssaa的实现games101中msaa的实现深度插值的差错原因当投影的图形与投影的平面不平行时,这时进行透视投影,从上图中可以看出,投影平面上的线段时均匀......
  • 【图形学笔记】Lecture02&03 光栅化、抗锯齿、Z-buffer
    目录Lecture02-DigitalDrawing数码绘画Triangles-FundamentalAreaPrimitive三角形——基本区域Rasterization光栅化Sampling采样Lecture03-Sampling,Aliasing,Antialiasing采样、锯齿、抗锯齿Artifactsduetosampling-“Aliasing”采样产生的问题-混叠Antialias......
  • 正确设置抗锯齿
     一、OPENGL抗锯齿一般情况下,OpenGL抗锯齿的效果是有的,但是如果你的程序中没有正确设置抗锯齿参数,或者你的显卡不支持抗锯齿,那么抗锯齿就不会起作用。正确设置抗锯齿参数的方法是:1.在程序中调用glEnable(GL_LINE_SMOOTH)函数,开启抗锯齿功能;2.调用glHint(GL_LINE_SMOOTH_H......
  • 抗锯齿下采样(Anti-aliasing/down-sampling)-python-numpy 实现
    抗锯齿下采样(Anti-aliasing/down-sampling)-python-numpy实现这篇内容会涉及:卷积和抗锯齿下采样。代码请访问:https://github.com/LonglongaaaGo/ComputerVision问题描述如果直接对图片进行上采样,比如说用nearest线性插值,我们能够发现上采样的图片会有很多锯齿,如上篇从Nearest插值......
  • 走样与反走样(抗锯齿)浅述
    写在前面:本文章为个人学习笔记,方便以后自己复习,也希望能帮助到他人。由于本人水平有限难免出现错误,还请评论区指出,多多指教。部分图元和素材来源于网络,如有侵权请联系本......