Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

1 Neutral

About IlPresidente

  • Rank

Personal Information

  • Role
  • Interests

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hey there, I (think) have implemented the temporal reprojection: I achieved 6-8ms on GTX 960, rendering 1/16 frames. It's of course not impressive against the 1.8ms/2ms Andrew Schneider told about, but to me and my purposes (just an homebrew graphic engine) it's quite enough. It's impressive how it well it become faster, also it's funny how the "blurry" nature of temporal reprojection works well with the same blurry nature of the clouds! Anyway, before Implementing it, I tested on shadertoy the mechanism when a pixel must be written (hoping it's correct): Bayer Pixel Writing. PS: I also discovered how heavy could be a Post Processing effect, in this case God Rays...
  2. It seems to works with 1.0 in z! really thank you! Now I can go forward!
  3. I'll definitively give a try soon. Are you sure the reprojection I posted it's correct? It gave me strange artifacts: when don't move the camera position (just rotating it) the reprojection is fine, but if i do, it mess up. I uploaded what I mean. The first image fits well, the second doesn't.
  4. Yes, I also have to implement the optimization of the HZD article. So, during the temporal reprojection you are speaking about, it is correct to use the reprojection similar to the one I wrote or I just have to simply write over different coordinate while I keep the others pixels invariate? I explain what I mean: for example, If I write the image over two frame, I first write the pixels with odd X coordinate, then with even X coordinate. It's that how does it work? I have another question: does the usage of the mipmap increase performance? Otherwise, why do I would want to use it?
  5. Hi all, Recently I've been working (as hobbyist) to Volumetric Clouds rendering (something we've discussed in the other topic). I reached a visually satisfying result, but the performance are (on a GTX 960 @ 900p) quite slow: about 10-15 fps. I was trying to improve it. ATM the solely optimization it's the low transmittance (high alphaness) early exit. I wanted to implement even early exit on high transmittance (for example, when the cloud coverage is low the performance decrease a lot due to the absence of early exit): this require to keep in memory the last frame and check if in the previous frame (by finding the correct uv coords) its transmittance was high. I've got some problems to find the correct uv coords. Currently I'm doing it in this way: vec3 computeClipSpaceCoord(){ vec2 ray_nds = 2.0*gl_FragCoord.xy/iResolution.xy - 1.0; return vec3(ray_nds, -1.0); } vec2 computeScreenPos(vec2 ndc){ return (ndc*0.5 + 0.5); } //for picking previous frame color vec4 ray_clip = vec4(computeClipSpaceCoord(), 1.0); vec4 camToWorldPos = invViewProj*ray_clip; camToWorldPos /= camToWorldPos.w; vec4 pPrime = oldFrameVP*camToWorldPos; pPrime /= pPrime.w; vec2 prevFrameScreenPos = computeScreenPos(pPrime.xy); And then use prevFrameScreenPos to sample the last frame texture. Now, this (obviously) doesn't work: what I feel is that the issue here is that I'm setting z coord in computeClipSpaceCoord() as -1.0, ignoring the depth of that fragment. But: how can I determine the depth of a fragment in volume rendering, since it's all done by raymarching in the fragment shader? Anyway, it seems to be the key of Temporal Reprojection. I wasn't able to find anything about, do you have any resource/advice to implement this? Thank you all for your help.
  6. IlPresidente

    Horizon:zero Dawn Cloud System

    I think I kind of solved: There is still no scattering modeling and no spherical model. Also, I dropped the Powder effect. For the raymarching, I used an approach similar to tailorswift's one. About the optimization, I've a question about OpenGL/GLSL: does the using of texturelod affects (in positive) the performance?
  7. IlPresidente

    Horizon:zero Dawn Cloud System

    So the view direction is the... ray direction? Because I tried to calculate the dot between LightDir and ViewDir but it didn't seemed to work, about the phase function, even lerping with two differents g coefficient. Are you sure the composition formula is right? if the alphaness of a cloud color is about 1.0 it'll result like white... I'll try this code too, thank you. At worst, i'll post my code too. It's quite a clone to the one posted by WFP 2 page ago.
  8. IlPresidente

    Horizon:zero Dawn Cloud System

    View direction meaning SamplingPoint-EyePosition? For dark edges I mean this: I blend with the background doing (in glsl) vec4 finalColor = vec4(mix(background.rgb, cloud_color.rgb, cloud.a), 1.0); I think (perhaps incorrectly) is due to the color integration ( src.col *= src.a; ) in the raymarcher...
  9. IlPresidente

    Horizon:zero Dawn Cloud System

    Honestly I tried with sphere shape but i had some problem with picking the right uv. Anyway, do you have any advice about the lighting/coloring of the clouds? ATM i followed the algorithm of WFP but it produces to me effects like dark border. Also, I didn't understood well between which vectors the HG phase function must be calculated.
  10. IlPresidente

    Horizon:zero Dawn Cloud System

    Hi all, I'm new here, I'm a CS student with this new fabolous hobby! I decided to sign in this community after I was stuck with my version of HZD clouds since I saw the source of WFP, who I thank. This is what I achieved so far: There's still room of improvement of course (e.g. HG phase function is not implemented, but for now I have a question: I want to merge this work in a Procedural Terrain that I already have ready, (a pic in spoiler) but i don't know well how to do it. At the moment (as you can see) the clouds are rendered inside a cube. The terrain is made by squared tiles. Do you think is better switch from a cube to the "canonical" two concentric sphere or let stay the cube model? Thank you all for your help! PS: Thank to Andrew Schneider for his beautiful work!
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!