12

Talking about Linear RGB must be avoided because it does not tell you anything about the RGB colourspace intrinsics, i.e., Primaries, Whitepoint and Colour Component Transfer Functions. A few years ago, assuming it was sRGB was middling but nowadays with DCI-P3 and BT.2020 being very common, it must be ruled out. The ideal gamut for rendering is the one ...


10

If lighting with multiple lights, they add together to make the final lighting value. A negative light would darken other lights, which is incorrect. This is also true if you add in specular reflections, emissive lighting, or other sources of lighting. The negative lighting from one source of lighting would darken some other source of non negative lighting.


5

In practice, when we say "linear RGB," we mean "sRGB without the gamma correction." It would be more correct to say that there is the "sRGB colorspace" and the "linearized sRGB colorspace", with the sRGB specification definition the conversion from one to another. Yes, there are infinitely many "linear RGB" color spaces. But the thing that all of these "...


4

Yes, I think it's expected that setting roughness = 0, combined with using point lights for illumination, leads to no visible specular highlight. The size of the highlight is infinitesimally small, so the sample points (e.g. pixel centers) almost surely miss it. The math breaks down as well, as the reflectance would become infinite on the zero-sized ...


3

If silhouette is not important, you could bend the shading normal near edges. Since it's a cube you can probably compute the normal procedurally in the shader based off of the uv. I.e. if uv is in range [0,0.1] or [0.9,1.0] start bending the normal towards horizontal. If silhouette is important, drawing a rounded cube model with vertex normals would make ...


3

That's just how the Reinhard operator works. If the scene has very high dynamic range important detail may be lost near the high luminance region as you found since both will map near 0.99. Reinhard is a form of global operator. There are other types of algorithms using local operators which tonemap the pixel based on the intensity of the underlying ...


3

Unfortunately, the iridescence model is not made to be applied to a diffuse term. Pascal and I made it for microfacet models only (that is the specular term). One way to understand how to include it to a game engine might be to look at Unity's HDRP implementation. In the Lit.hlsl to see how to incorporate the iridescence Fresnel into a specular + diffuse ...


3

By lighting in object space, sure, you could avoid transforming the normals into world space. However, you'd have to transform the light positions/vectors into the object's space. Also, if you want any view-dependent shading such as specular, you would have to transform the camera position into object space as well, to calculate view vectors. Now, all of ...


2

I'm guessing Rasterization based pipelines use the same procedure for shading i.e. A ray is shot from the pixel and then from the triangle that got projected on that pixel to the light source? Close, but not quite. There's no actual tracing of rays but the underlying linear algebra is the same. It sounds like you already understand the first part of ...


2

$N \cdot L < 0$ implies that the light is directed in the direction opposite the normal to the visible surface of the polygon. This means that the light is coming from behind and striking the back face of the polygon. In the analogous situation in real life, light striking one face of an opaque surface does not affect the illumination of a second face. ...


2

Because negative shading values are undefined and don't play well with tonemapping. It is preferable to use values in $[0,1]$ for low-dynamic-range or $[0,+\infty)$ for high-dynamic-range images.


1

If you compute the lighting in object space, before you scale the object then you will get false lighting. Imagine a small cube being lit by a single point light representing a light bulb. Now, scale that cube up to the size of a building. The lighting will have been calculated already, and now the entire building is being lit by a single light bulb.


1

So after reading up some more research papers and the concepts of most people working in this field here and there, I've reached an answer I'm satisfied with. If someone disagrees or thinks there is a better or more correct way to think the problem do share your ideas. 1) First to answer my point 1. I've noticed that most di-electric surfaces' Index of ...


1

The first is a definition of radiance in terms of the flux - it's a the derivative of flux with respect to both area and direction. It's simply a relation between $\Phi$ and $L$. It simply says that if you integrate radiance over the area of some surface, and for each point you integrate over all possible directions, then you will get the flux arriving/...


1

It's a variant to projective texture mapping. The simple way to do this in the fragment shader by using the position of the fragment to decide whether it is close enough to the plane of the laser to light up.


1

The Phong lighting model computes the specular response as the dot product between the mirror reflection direction and the viewing direction, raised to a power. For example, if $\vec{V}$ is the viewing direction, $\vec{L}$ the incoming light direction and $\vec{R}$ the perfect specular reflection direction for $\vec{L}$, then the specular response is $\text{...


1

The three types you are referring to are specular, diffuse and ambient reflection. I find the example image on wikipedia to show the individual parts quite nicely: First the ambient light is showing. This is not really a reflection, but more of a way to make up for global illumination in a cheap way. You simply assume that a small portion of light is always ...


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