# Tag Info

15

Using two Fresnel terms is correct in the sense that any given diffuse path will pass through the surface twice. If you're solving diffusion by tracing a path through the medium until it bounces out again then that you will get two (or more) Fresnel terms for that path as it interacts with the surface. However, that's not what you're doing with a diffuse ...

9

In film production, we almost never use 8-bit textures for color/albedo, because of banding, etc. (JPEG is especially problematic since by spec, it's sRGB rather than linear values.) We either use 'half' (16 bit float) or 16-bit unsigned integer values for color/albedo textures.

9

No, because the underlying physics is not the same, nor the lobe shape - not to speak of their parameters such as color and Fresnel term. Specular is really true surface interaction with the interface material/air, so it has Fresnel modulation and the internal medium has no influence on colors. But the surface condition strongly influence the reflectance, ...

8

Yes, it's possible in some extreme cases for HDR lighting and tonemapping to expose banding issues in color textures. In those cases, having a higher bit depth for the textures could be useful. However, in my experience the majority of materials and ordinary lighting situations don't exhibit this problem, and most textures in a typical game are fine in 8-bit ...

8

While browsing to properly write my question, I actually found the answer, which happens to be very simple. Another Fresnel term is also going to weight in as the photons make their way out of the material (so being refracted into the air) and become the diffuse term. Thus the correct factor for the diffuse term would be: $$(1 - F_{in}) * (1 - F_{out})$$

6

When you perform regular Monte Carlo integration over a hemisphere using $N$ samples, each sample represents $\frac{2\pi}{N}$ steradians. So the Monte Carlo integration for Lambertian BRDF is: $$\frac{2\pi}{N}\sum_{i=1}^N\frac{\rho}{\pi}L_i*Cos\theta_i$$ For path tracing, you only take one sample per path segment, so because $N$=1, the above sum becomes: $... 6 I finally figured out a flaw in my argumentation to use the half vector for the diffuse part. tl;dr version:$\alpha_{hi}$and$\alpha_{ho}$are not equal, this assumption only works for the specular part. Therefore the energyconservation is not given. More correct: Per definition$\alpha_{hi} = \alpha_{ho}$, but you are not allowed to use them in the ... 5 I'd like to invite readers to read this article about Quake 2 engine rasterization technology explained in details, if they have the time. If TLDR, please pay attention to this image: What we see is the Albedo channel, that's what you want to encode in 16 bits if I understand your question correctly. I'm not going to say "if it could be encoded in 256 ... 5 A perfect Lambert reflector actually reflects light in a cosine distribution - that is, the amount of light per unit area reflected in any given direction$R$is proportional to$N \cdot R$. The reason the radiance appears constant for all angles is that as the view direction moves away from the normal, the reflected light per unit area decreases, but the ... 4 Some elementary trigonometry tells you what to expect from this situation. The angle to see the shadow terminator is marked on the diagram, and a use of SOHCAHTOA tells you it's$\cos^{-1}\tfrac{1}{2} = 60^\circ. Yours looks higher than that so your intuition seems correct. Stepping through the lighting code will help you see where it's going wrong, and ... 3 Your ambient lighting contribution is missing from the second one (: 2 I see a couple of problems by scanning quickly over your code. You are using ray.origin as new origin when scattering the ray off the surface, you should however use the hit point as origin of the new ray. This might also explain why you see a kind of "screen aligned" shadow. The new ray direction is just the direction ray.origin to target. Is ... 2 It is cancelled out by the probability density function in the estimator. The pdf in their case is exactly:\frac{\cos\theta}{\pi}$, which is in the denominator: att = albedo * cos_theta / pdf = albedo * pi. They have absorbed pi in the albedo. Note that there's an update on github to the code, since random_in_unit_sphere() actually generates a$\cos^3\...

2

Physically, the origin of diffuse light is subsurface scattering, which happens continuously as light travels through a material. So, the proportion of transmitted light depends on the thickness of the object. There's no precise equivalent to the Fresnel law, but maybe the closest thing is the Beer–Lambert law. It states that the transmitted light falls off ...

2

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

1

I don't really understand what are you doing. I think your first equation shouldn't have a cos factor in it. We have the relation, $BRDF = dL_r / dE_i$ That is the brdf is the ratio of reflected radiance to incoming "irradiance". Re-arranging this gives us, $dL_r = BRDF * dE_i$ For diffuse surfaces we know, $BRDF = \alpha/\pi$ Substituting in above ...

1

float3 DirectDiffuseBRDF(float3 diffuseAlbedo, float nDotL) { return (diffuseAlbedo * nDotL); } float4 PS(VS_OUTPUT input) : SV_TARGET { input.normal = normalize(input.normal); float4 diffuseAlbedo = ObjTexture.Sample(ObjSamplerState, input.TexCoord); float nDotL = dot(input.normal, light.dir); float3 diffuseLighting = diffuseAlbedo * ...

1

I read that paper as well last year. There's a strong assumption made by authors which is the "stationary". What this means is that in absence of light in given 3000x2000 pixels image the material is more or less the same in each tile of 192x192. The reason for this is because we the surface is lit by white light is like they have a sample of BRDF for a set ...

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