Jump to content

sergio

Members
  • Content count

    48
  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Community Reputation

4 Neutral

1 Follower

About sergio

  • Rank
    Peon
  • Birthday 09/19/1984

Contact Methods

  • Website URL
    http://vimeo.com/sergeneren

Personal Information

  • Name
    Sergen
  • Location
    Turkey

Recent Profile Visitors

2,599 profile views
  1. Dense cloud shader (wdas cloud hype)

    Hi hazoc, Thank you for the hip file, now i know it is possible to achieve good results with mantra. Sure 3.5h for a single image for a single cloud looks too much for production but i think recent improvements in denoising algorithms may come handy. I've been leaning towards realtime sloutions but i guess there is no escape from reality: We need path tracing for dense volumes. Actually the developers of hyperion also states that without using a denoiser render times are not suitable for a path tracer (WDAS ACM:TOG paper: https://www.yiningkarlli.com/projects/hyperiondesign.html) I have no access to an optix denoiser atm but i have done a test with COP denoiser. Here is your shader rendered with sun coming from behind. IPR render time 1h.07m. Denoised with COP denoiser, cineon log with an S curve.
  2. Dense cloud shader (wdas cloud hype)

    Update: - Added cone sampling towards light - in_scatter uses depth and vertical probability - added sky color dense_cloud_shader_v007.hipnc
  3. Dense cloud shader (wdas cloud hype)

    Hi Eilef, I've took a look at your file and seems that you are feeding the output of volume core shaders bsdf back into itself with a ramp. I think what horizon zero down real time clouds are about is that they do very little sampling of ray marching and try to approximate everything with a very few calls to shaders. Being offline, we have much more time then real time guys (but not that much apparently). Anyway here is my implementation of the real time clouds. I've bumped up the sample count and there are no optimizations but as a proof of concept it works. dense_cloud_shader_v006.hipnc TODO: Take cone samples towards light. Modify in_scatter contribution with depth and vertical probability. Here is a test render. just took a couple seconds.
  4. Dense cloud shader (wdas cloud hype)

    Hi Eilef, That image look fantastic for a 20 sec render. I've read that paper over and over and downloaded the full presentation. From what i can tell they have done many hacks to make the clouds look good. No idea why the edge darkening ("in-scatter" as pixar papers call it) makes details get lost, it should only be a probability multiplier. I've recently read many light transport and monte-carlo path traceing papers and maybe path tracing is the only way. Since they have most physical approximation. This is the most recent paper from pixar: production volume rendering siggraph2017 course Anyway, would love to see your setup. thanks for your input
  5. Dense cloud shader (wdas cloud hype)

    I think that slow part is what makes micropolygon rendering attractive, but for a realistic result a very complex shader is required. I know multiple scattering comes free with pbr but with a cost in time. And no redshift doesn't seem to have multiple bounces in volumes. I crancked up GI bounces and tried photon map but it has no effect.
  6. Dense cloud shader (wdas cloud hype)

    Just saw this https://twitter.com/Farmfield/status/1016104271610302464?s=19 I know it's just a hype. But a nice shader practice for myself.
  7. Hi I've been playing around with the wdas data set cloud and I've noticed that we houdini users (who are not lucky enough to have access to shaders dveloped by giant companies) lack an overall dense (almost pyroclastic) cloud shader that shows the distinct features of puffy cumulus clouds. After a through searching both in web and odforce i've seen that a few people also inquired on the same subject but it was inconclusive. I've decided to use this post as an idea dump to possibly implement a new shader or track your opinion on the subject. During the searching i've realized that distinct features of dense clouds are achievable by either using a very high number of internal light bounces or by faking them. I have seen that dark edges are the most prominent feature of the dense clouds since the other effects as transmittance and high forward scattering are already studied and implemented in shaders. To assess the current state of volume rendering other then mantra i've done a couple tests with several renderers in maya and also tried the new terragen 4.2. The most beautiful (simulating a real cloud light) is the hyperion render. Terragen 4 clouds are also very realistic and detailed (http://terragen4.com/first-look/). Arnold seems to be the best commercial option out there and is very good in giving the edge darkening but fails at details in dark areas (which is highly visible in hyperion) but i think these areas can be compansated with additional ligths. Redshift render is blazing fast but no where near the realism. In houdini i have used pbr with 50 volume limit, 5x5 samples, volume quality at 2 with a standart volume cloud shader. I have just started to see dark edges but even rendering a very small portion of 1920x1080 image took me about 10 minutes ( 2xE5-2680 v3, 48 cores total) . For speed comparison, redshift was the fastest with a couple minutes, arnold took about 10 minutes, terragen is said to be around an hour for a very heavy cumulus cloud. No information about hyperion but since wdas has a 50.000 core farm it shouldn't be a problem. Mantra was the worst with a projected couple hours of total render. Below are the sources i found for future reference for myself Oliver also asked about a cloud shader and Mike Lyndon says he has implemented a shader before (https://forums.odforce.net/topic/17900-cloud-shader/) . This is the most prominent one and is the one i will be implementing. The thesis of Antoine Bouthors that Mike says he has implemented (http://evasion.imag.fr/~Antoine.Bouthors/research/phd/thesis/thesis.pdf) . Beautiful mie scattering solution by Matt and the base for my shader (http://mattebb.com/weblog/rendering-clouds-with-the-mie-phase-function/) Odforce user Andrea was also interested in such topic and has some ideas in it (https://forums.odforce.net/topic/24831-cloud-shader/) Modelling aspect of clouds (https://forums.odforce.net/topic/12923-pyroclastic-noise-demystified/?page=2) Siggraph presentation by Magnus Wrenninge (http://magnuswrenninge.com/content/pubs/VolumetricMethodsInVisualEffects2010.pdf) Realtime clouds for horizon zero dawn by guerilla games. realtime but has really nice implementations (horizon zero dawn real time clouds) A hefty paper from Hyperion developer Yining Karl Li (https://blog.yiningkarlli.com/2017/07/spectral-and-decomposition-tracking.html) With the directions i gathered from Mike Lyndon's post i have started implementing the photon map approach. I have already implemented a henyey-greenstein phase function and added the contribution by radiance photons. Now i will try to implement the ideas presented in the thesis of Antoine, with high focus on cumulus cloud rendering (ch. 7). Attached is the current state of shader (cloud_shader.rar) I am also interested in GLSL implementations for viewport and cloud modelling tools but i guess this post wil be mostly about a shop type implementation. anyway here is a simple glsl implementation work and i am open to every feedback https://forums.odforce.net/topic/32197-glsl-pipeline-in-houdini/?tab=comments#comment-190945 I am definitely not an expert on this subject, so all input, ideas, criticsm, and source is welcomed. Thank you. Hyperion Render (wdas_cloud_hyperion_render.png is Copyright 2017 Disney Enterprises, Inc. and are licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License ) Terragen 4 Render terragen_4_render.tif Houdini Pbr Render (the little part on top took 10 minutes to render so i left it unfinished) Arnold Render Redshift Render
  8. GLSL Pipeline in Houdini

    Does anyone have an example for a volume glsl? i am trying to write a custom one but no matter i do i can't seem to get any effect. i know it can be done (horizon zero down 2015 siggraph presentation slide no:63) further questions. and a couple more questions. - how does sampler3D work in houdini? - i tried to color the volume (new operator method) by using HouAssignDiffuseOnly function but it gives me "call to undefined function" error. here are my vertex and frag code vertex #version 330 #line 1 #ifdef GL_ARB_explicit_attrib_location #extension GL_ARB_explicit_attrib_location : require layout(location=0) in vec3 P; layout(location=1) in vec3 N; layout(location=2) in vec3 uv; #else in vec3 P; in vec3 N; in vec3 uv; #endif layout(std140) uniform glH_Material { vec3 ambient_color; vec3 diffuse_color; vec3 emission_color; vec3 specular_color; vec3 metallic_color; float metal; float material_alpha; float material_alpha_parallel; float roughness; float diffuse_roughness; float ior; float reflection; float coat_intensity; float coat_roughness; int specular_model; int coat_spec_model; float specular_tint; bool use_geo_color; bool use_packed_color; bool has_textures; bool has_diffuse_map; bool has_spec_map; bool has_opacity_map; bool has_emission_map; bool has_normal_map; bool has_rough_map; bool has_displace_map; bool has_occlusion_map; bool has_metallic_map; bool has_coat_int_map; bool has_coat_rough_map; bool has_reflection_int_map; bool has_reflect_map; ivec4 diffuse_udim_area; ivec4 spec_udim_area; ivec4 opacity_udim_area; ivec4 emission_udim_area; ivec4 normal_udim_area; ivec4 rough_udim_area; ivec4 displace_udim_area; ivec4 occlusion_udim_area; ivec4 metallic_udim_area; ivec4 coat_int_udim_area; ivec4 coat_rough_udim_area; ivec4 reflection_udim_area; bool has_env_map; vec3 envScale; mat3 envRotate; vec2 normalMapScaleShift; vec2 normalMapScale; vec3 normalMapXYZScale; int normal_map_type; // space: 0=tangent, 1=world int normal_map_ncomps; // 2 or 3 component int displace_space; float displace_scale; float displace_offset; bool displace_y_up; // vs. z-up bool invert_opacitymap; bool invert_roughmap; vec4 rough_comp; vec4 occlusion_comp; vec4 metallic_comp; vec4 coat_int_comp; vec4 coat_rough_comp; bool reflection_as_ior; vec4 reflection_comp; }; out parms { vec3 pos; vec3 nN; vec3 tex; } vsOut; uniform mat4 glH_ViewMatrix; uniform mat4 glH_ProjectMatrix; uniform mat4 glH_ObjectMatrix; uniform mat4 volumeMatrix; void main() { vec4 my_p; vsOut.tex = uv; vsOut.nN = normalize( glH_ViewMatrix * (glH_ObjectMatrix * vec4(N, 0.0)) ).xyz; my_p = glH_ViewMatrix * (glH_ObjectMatrix * (volumeMatrix * vec4(P, 1.0))); vsOut.pos = my_p.xyz; gl_Position = glH_ProjectMatrix * my_p; } frag #version 330 #line 1 in wparms { vec3 pos; vec3 nN; vec3 tex; } fsIn; layout(std140) uniform glH_Material { vec3 ambient_color; vec3 diffuse_color; vec3 emission_color; vec3 specular_color; vec3 metallic_color; float metal; float material_alpha; float material_alpha_parallel; float roughness; float diffuse_roughness; float ior; float reflection; float coat_intensity; float coat_roughness; int specular_model; int coat_spec_model; float specular_tint; bool use_geo_color; bool use_packed_color; bool has_textures; bool has_diffuse_map; bool has_spec_map; bool has_opacity_map; bool has_emission_map; bool has_normal_map; bool has_rough_map; bool has_displace_map; bool has_occlusion_map; bool has_metallic_map; bool has_coat_int_map; bool has_coat_rough_map; bool has_reflection_int_map; bool has_reflect_map; ivec4 diffuse_udim_area; ivec4 spec_udim_area; ivec4 opacity_udim_area; ivec4 emission_udim_area; ivec4 normal_udim_area; ivec4 rough_udim_area; ivec4 displace_udim_area; ivec4 occlusion_udim_area; ivec4 metallic_udim_area; ivec4 coat_int_udim_area; ivec4 coat_rough_udim_area; ivec4 reflection_udim_area; bool has_env_map; vec3 envScale; mat3 envRotate; vec2 normalMapScaleShift; vec2 normalMapScale; vec3 normalMapXYZScale; int normal_map_type; // space: 0=tangent, 1=world int normal_map_ncomps; // 2 or 3 component int displace_space; float displace_scale; float displace_offset; bool displace_y_up; // vs. z-up bool invert_opacitymap; bool invert_roughmap; vec4 rough_comp; vec4 occlusion_comp; vec4 metallic_comp; vec4 coat_int_comp; vec4 coat_rough_comp; bool reflection_as_ior; vec4 reflection_comp; }; uniform sampler3D volumeMap; uniform float step_scale; uniform float depth_cutoff; uniform mat4 glH_InvObjectMatrix; uniform mat4 glH_InvViewMatrix; uniform mat4 glH_ProjectMatrix; uniform mat4 glH_ViewMatrix; uniform mat4 glH_ObjectMatrix; uniform mat4 iVolumeMatrix; void HOUassignDiffuseOnly(vec3 diff, vec3 P, vec3 N, float alpha); void main() { vec4 color; int i; vec3 dir; vec3 uv; vec4 c, p, zp; float a; int count = 0; mat4 imat; imat = iVolumeMatrix * (glH_InvObjectMatrix * glH_InvViewMatrix); if(fsIn.nN.z <= 0.0) discard; dir = normalize(fsIn.pos.xyz); dir *= 0.1; //step_scale; color = vec4(0.0); gl_FragDepth = 1.0; p = vec4(fsIn.pos,1.0); uv = (imat * p).xyz * 0.5 + 0.5; do { c = texture(volumeMap, uv); a = 1 ; // * step_scale; if(a > 0.0) { if(color.a < depth_cutoff && color.a + a >= depth_cutoff) { zp = glH_ProjectMatrix * p; gl_FragDepth = zp.z / zp.w; } c.rgb *= a; color.rgb += (1.0 - color.a) * c.rgb; color.a += a; } p.xyz += dir; uv = (imat * p).xyz * 0.5 + 0.5; count++; if(any(lessThan(uv, vec3(0.0))) || any(greaterThan(uv, vec3(1.0))) || count > 200) break; } while(color.a < 1.0); HOUassignDiffuseOnly(color.xyz, fsIn.pos, fsIn.nN, a); }
  9. Np. No packed prims unfortunately, You have to convert everything to polys.
  10. Updated the repository. And compiled for 16.0.557.
  11. Sure. Will add tonight.
  12. Distributing sims with afanasy

    Unfortunately no. It's been almost a year i came up with idea (dunno if i am the first though) but couldn't get any further. But fine folks at github are discussing on the concept, maybe something working is along the way. Too bad im not pro on python. Let me know if you can get something up and running.
  13. Hello everyone, I have recently wrote an inhouse python plug-in in c++ for houdini. H2A is a custom plug-in to export houdini geometry in arnold ass file format to be able to load in mtoa, htoa or c4dtoa. This plug-in exports almost every geometry type to arnold i.e. points, polygons and curves. You can compile or grab the compiled plug-in from: https://github.com/sergeneren/anima/tree/master/anima/render/arnold/H2A P.s. please excuse my sloppy c style
  14. Thanks Mila, that really helped. I wanna try the gdp->notifyCache(GU_CACHE_ALL) but seems it doesn't have a GA equivalent. Is it refreshCachedHandles ?
  15. Im just curious if heavy tasks as attribute creation can be done when user asks for it. And it may as well be a per point varying attribute.
×