6

As gllampert pointed out in the comments the value is hardware dependent. You can retrieve it with glGet, using GL_MAX_COMBINED_TEXTURE_IMAGE_UNIT. You can find how different hardware performs here. However, in OpenGL 3 there is a lower bound of at least 48 simultaneously used textures, no matter which type. [source]


6

What is wrong with it seems to be explained on the next two slides: it leads to non-energy-conserving results, where the apparent brightness of the volume changes depending on the scattering coefficient. My read of it is that the "wrong" integration code implicitly assumes a constant transmittance over the extent of each voxel. But the trouble is, when the ...


5

In the binary version you're doing an imageLoad and an imageStore on the same texture to modify it. This is a classic race condition: the GPU executes multiple threads of the shader in parallel, and there's no guarantee for those load-modify-store sequences to happen atomically. The operations from different threads can be interleaved, resulting in wrong ...


4

I am not aware of hardware support for 3D anisotropic filtering. I could be wrong about its existence though. I believe it has been tried. The motivation for 2D anisotropic filtering is to prefilter the texture function over the screen area it falls under in a more accurate way than doing a box filter in texture space (usually, anisotropic filtering does ...


4

Array textures do not contain textures; they are a single texture that contains a number of images, with each image being of the same size, format, mipmap depth, etc. As such, the sampling parameters that are part of the texture apply to sample fetches for all images within the texture. That having been said: In the shader I perform a manual GL_NEAREST ...


3

We had some related questions lately, so you might find them useful: Paint pixels on the image around the cursor for painting application How are textures projected onto 3d models in texture painting applications Get normalized device coordinate of an image pixel I can't tell you how the named applications do it, since I don't have access to the code, but ...


3

OBJ files typically contain vertex positions, texture coordinates (also known as UVs), and normals, as well as face data. There are other kinds of things they can contain but those are the most common (see here for a fuller specification). Vertex positions are specified with the v command, texture coordinates with vt, and normals with vn. The faces then ...


2

The full explanation of what I was doing wrong is: The depth parameter in the glTexSubimage3D refers to the depth of the data being sent. Since I am trying to send a single layer this depth should be 1 not 0 (the depth of an image/layer) (As explained by Nicol Bolas). The zoffset parameter in the same function refers to the offset in layers where the data ...


2

glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, 0, 894, 894, 0, color_format, GL_UNSIGNED_BYTE, data); You're transmitting 3D data. But you told OpenGL that the 3D block of data has a depth of 0. So the number of pixels you're transmitting is... 0. I have no idea why OpenGL doesn't provide an error when passing 0 for any of the sizing components (since that ...


2

The memory layout of a (2D) array texture is pretty similar to a 3D texture, with the individual image layers stored one after the other in a big 3D-array of pixels. So that's also how you set them. You either load each individual image into a big GLubyte array one after the other and set it with glTex(Sub)Image3D or you load each image into its own GLubyte ...


1

Textures are applied to the faces of a mesh, so textures cannot be anywhere there isn't a face for it to appear on. "Adding more length" to a mesh pretty much implies moving some of the vertices. I don't think you're going to get around that. Now if you are assembling a game world, it's quite common to have modular mesh pieces that can be aligned ...


1

The .bin file that goes with a .gltf only includes mesh data (position, normal, uv, other vertex attributes as needed). It does not normally include any images (unless you're using the base64 export "glTF Embedded", but don't use that for this, use "glTF Separate" instead). If you look in the JSON text of the .gltf file, you'll see an images array, where ...


1

You can look into alias-free volumetric sampling algorithm by Huw Bowles for potential solution to the ray marching aliasing issues. The basic idea is to snap your samples to planes based on the ray direction that's best explained with this Shadertoy demo.


1

One method is to do projection mapping. I understand that most 3D rendering applications can do that. I don't have much experience with them, but I have done it using AfterEffects using the Camera Mapper in Buena Depth Cue. Algorithmically, it's achieved by projecting the geometry back onto the image to generate texture coordinates. So one way to do that is ...


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