Hot answers tagged

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 ...


4

C++ has no defined ABI, so C++ programs can't link to libraries that were compiled with a different compiler. In addition, MS's Visual Studio C++ compiler is not ABI-stable, so you don't just have to use the same compiler: you have to use the same version that the library was compiled with. This would be a huge problem for a widely-used library like DirectX....


4

After some researches and some answers from professionals here is my conclusion. Pros Don’t require tangents or binormals. Less interpolators. Only need two channels. less texture memory. Don’t suffer from tangent seams. Can be blended using alpha blending, without renormalization. Less mesh memory: We don’t need to store a tangent vector. Fast ...


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 ...


3

The most likely explanation is that the game is GPU-bounded and not running at a fixed frame rate. If reducing the quality in the settings allows the game to reach a higher frame rate, the GPU load will be the same, but the CPU load will increase: the CPU is doing the same amount of work per frame (or possibly less), but there are more frames per second, so ...


2

The tool seems to be generating an unofficial extended version of DDS in which the FOURCC code is replaced by a value from the D3DFORMAT enum. The code 0x0000006F translates to decimal 111, which translates to D3DFMT_R16F. The Microsoft DDS documentation notes that this is seen sometimes, although not recommended: DDS Variants There are some common ...


2

3D clipping is usually done in clipspace coordinates, that means the perspective matrix is used for sending the primitives to clipspace before doing the actual perspective projection. You can visualize the clipspace as a view frustum but with the shape of a box. So it is very fast to clip primitives against a AABB. The math is a little involved, but is all ...


1

A few options: Make the 0-1 discontinuity explicit in the mesh. That is create a 2 sets of vertices that lie exactly on the line where the value would be 1 or 0 (one set gets 1 and one gets 0) then connect the vertices up like they would makes sense. Switch to a different texture mapping projection, I prefer a cubemap because it minimizes distortion at the ...


1

I've actually managed to find problem thanks to @PaulHK, thanks! I decided to pass which face I am currently working on and setting then coordinates manually per face. It is awful but it works rather good and since it is prefiltered and not done in runtime I found it good enough: [branch] if (g_upVectorVal.z == 1.0f) { input.position.z = -1.0f; } [...


1

It seems that sampler2D_float doesn't allow to interpolate shadow lookup linearly. So I had to do it by hand. Here's an example of interpolated shadowing. float texture2DCompare(sampler2D depths, vec2 uv, float compare){ float depth = texture2D(depths, uv).r; return step(compare, depth); } float texture2DShadowLerp(sampler2D depths, vec2 size, ...


1

I assume that you're using precomputed height map derivatives rather than calculating them on the fly (for details see this post on Mikkelsen's blog). If we need to supply pre-computed height derivatives, then we have to supply two channels, just like a normal map. One could argue that derivative mapping doesn't require the presence of a tangent vertex ...


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