# Tag Info

21

Mip selection is pretty well standardized across devices today—with the exception of some of the nitty-gritty details of anisotropic filtering, which is still up to the individual GPU manufacturers to define (and its precise details are generally not publicly documented). A good place to read about mip selection in detail is in the OpenGL spec, section 8....

15

The theoretical ideal antialiasing filter for discretely sampled data is a sinc filter, because it perfectly removes all frequencies higher than the Nyquist frequency, while leaving alone all the lower ones. So, to some extent, we can expect antialiasing filters that more closely resemble the sinc filter to produce better-quality images. The tent filter (...

10

To understand the nature of anisotropic filtering, you need to have a firm understanding of what texture mapping really means. The term "texture mapping" means to assign positions on an object to locations in a texture. This permits the rasterizer/shader to, for each position on the object, fetch the corresponding data from the texture. The traditional ...

10

There is a great paper from 2006 on this topic, Filter Importance Sampling. They propose your method 2, study the properties, and come out generally in favor of it. They claim that this method gives smoother rendering results because it weights all samples that contribute to a pixel equally, thereby reducing variance in the final pixel values. This makes ...

7

Wenzel Jakob et al presented a framework for layered Materials at SIGGRAPH 2014. Section 6.2 explains importance sampling. If you prefer code over equations, the method is implemented in the Mitsuba renderer.

4

A very simple low memory approach If you really want to use as little memory as possible, it can be done with not much more memory than that required to store a single image (the first frame) provided it is acceptable to do some preprocessing in advance. If you copy the following jumbled image, this jsfiddle will take it as input: It will then move the ...

4

Yes, ray differentials are the way to go. The Paper by Igehy introduces them for the use case of filtered texture lookups. When generating the primary rays, you initialise the differentials to reflect the pixel footprint. As the ray progresses through the scene, you update the differentials at every bounce. When it comes to a texture lookup, you need to ...

4

I was curious so I tried it. I used the Kaiser Window from Wikipedia: $\frac{I_0\left(\alpha\sqrt{1-x^2}\right)}{I_0\left(\alpha\right)}$ This page has a slightly different formulation using $\pi\alpha$ instead of $\alpha$. Given the comments in the page you linked about the Kaiser window being very similar to Lanczos and how they even overlap in the graph, ...

3

Mitchell–Netravali has negative lobes, which are generally not recommended for small sample counts from what I understand; you tend to end up with both the positive and negative areas undersampled. Also, negative lobes do produce a sharpening or ringing effect that looks like what you're seeing. I'd try a nonnegative filter, such as a cut-off Gaussian or a ...

3

Your understanding of the behavior of texture units and state is confused. That's to be expected: OpenGL's pre-DSA API is not making it easy to understand this. As far as core profile OpenGL is concerned, the only texture unit state is what textures are bound to which targets. That's all. Therefore, all glTexParameter calls affect the state of the texture ...

3

You probably want to set sigma to be a fraction of the radius, rather than a fixed value. Sigma controls the actual shape of the filter, while radius just controls how far out the filter gets cut off (as Gaussians truly have infinite radius, so we have to cut them off somewhere to use them in practice). With sigma set to 0.5, you're making a filter that's ...

3

I just looked at Wikipedia articles about Bilinear interpolation. A tent filter is a kind of Bilinear interpolation. A Bilinear interpolation interpolates on 2 dimensions. It first linearly interpolates on one dimension and then the other. When you look at this picture, it first does it on the column and then the row for example. The reason why this could ...

3

A few points that you probably already know, but that I just want to put out there for others reading this. Filtering in this case refers to low-pass filtering like you might get from a Gaussian Blur or a box blur. We need to do this because we are taking some media that has high frequencies in it, and rendering it into a smaller space. If we didn't filter ...

2

You could do this entirely within an OpenGL/WebGL fragment shader: Attach the image you wish to emerge as a texture/sampler2D. Attach uniforms for the current time, as well as the time you want the effect to finish. uniform sampler2D myTexture; uniform float currentTime; uniform float finishTime; #define TWO_PI 6.283185307179586476925286766559 Next, ...

2

This is an answer to your comment rather than the title of your question. It can be considered as a partial answer. The bias in path tracers are introduced by the estimators. For example, think of the following two equations: $$I = \int_{\Omega} f(\omega) d\omega$$ $$F = \frac{1}{N} \sum_{i}^{N} \frac{f(\omega)}{p(\omega)}$$ where $p: \Omega \to R$. It ...

2

Minification vs magnification is an extension of mipmap selection. When you calculate the desired mip level, it can come out to be less than 0 (or in general, less than the sampler's configured minimum LOD). In that case you're doing magnification of the lowest mip level. If the desired level comes out to a value greater than 0 then you're doing minification....

1

I don't have enough rep to add a comment so... You could use a post process based anti-aliasing technique like FXAA or SMAA. Also, if performance is not a priority, you could go for SSAA. Another option could be to write to a multi sampled texture (I'm not 100% sure if that is possible in your case).

1

In your case, I don't think a pre-processing is necessary. You may find the Hough transform useful in your case. Since your image is big, it can be difficult to have a straight line due to the noise and blur. This is what I got using a sobel contour detection with a smaller version of your image. This is maybe a good start to use a line detection ...

Only top voted, non community-wiki answers of a minimum length are eligible