Hot answers tagged

5

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

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

Your main idea is more or less correct. The cosine hidden in the projected area measure $dA^\perp = dA\cos(θ)$ compensates the weakening of irradiance due to incident angle (the Lambert's cosine law). This makes radiance independent from the incident angle. My guess is that the main motivation was to make it more practical to work with. The cosine in the ...


2

Yes, the convolution is effectively evaluating the following integral: $$ \text{irradianceMap}(\vec n) = \frac{1}{\pi} \int \text{environmentMap}(\vec \omega_i) \, \max(\vec n \cdot \vec \omega_i, 0) \, d\omega_i $$ This convolution isn't about whether the environment map is equirectangular, cubemap, or some other projection. We still have to do the ...


2

There's two main things it seems like you've not understood correctly. IBL is for indoor scenes and outdoor scenes In the early days when IBL was hot, the Uffizi light-probe was probably the most popular for researchers. IBL works really well for indoor scenes with strong light coming from multiple directions, such as churches with stained glass. That kind ...


2

Dielectric materials (which is what you get when metalness is 0) don't exhibit a mirror-like effect. Think of a sheet of smooth, non-transparent plastic. Real-life mirrors are panes of glass or transparent plastic covered with a thin layer of metal. Try a white base colour (1,1,1) and full metalness (1) instead. As Hubble pointed out in his comment, Unity ...


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

Turns out it had to do with the V vector working differently in deferred rendering than it does in forward rendering, something that I overlooked and seems obvious now. Specifically, I passed the view direction calculated in the camera class to the lighting pass fragment shader then negated it like so vec3 V = normalize(-(cameraPosition - v_pos));. Things ...


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

First we do gamma correction Make sure you actually need to do gamma correction on the albedo texture (or rather "uncorrection", i.e. making it linear). Not all textures are stored in sRGB color space. Also, you're doing it the wrong way around: Going from sRGB to linear color space you need to do the pow(1/2.2) part here and the pow(2.2) part in the end. ...


1

We have $t_{12} = t_{21}$, by the law of reciprocity. Also, $$r_{12} + t_{12} = 1\\r_{21} + t_{21} = 1$$ It follows that $r_{12} = r_{21}$ as well.


1

In microfacet BRDFs, the half-vector is the same as the microfacet normal. The half-vector is exactly the required normal for a microfacet to reflect light from the incident ray to the outgoing ray, by the law of reflection. So, for given incident and outgoing directions, only those microfacets whose normals are aligned with the half-vector are "active". ...


1

1, 1, 1, the output value is white. If this represents radiance than the output should be green, because when the signal radiance is the same, the pixel should be perceived as green. Am I correct? This is not correct. Your frame buffer most likely contains sRGB values. Of which 1,1,1 is used to represent white. Standard displays do not use spectral radiance ...


1

We're actually going through that paper for our own GGX BRDF metallic & edge_tint model, and we've spotted one crucial problem. Hammon is still using the Fresnel Schlick approximation for his microfacet field ray-trace which in reality only works for dielectrics (and conductors but with a hack). But we went all out on actual Fresnel (discarding ...


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