среда, 28 июня 2017 г.

EDXRay. волшебная сила Ctrl

в openGL виде нажать Ctrl и мышкой тыцнуть обьект - он станет выделен и покажется редактор материалов!
типа материала и свойства можно менять

EDXRay to pepelac render TODO

todo на ближайшее время по рендеру:
  • кнопка загрузки объектов, сцен, проектов(сцена+рендеренное)
  • сохранение сцен, проектов
  • средняя кнопка мыши зажатая и движ мыши с текущим объектом - переместить объект
  • вращение средней кнопкой мыши - увеличение/уменьшение
  • доделать обработку клавиатуры
  • все свойства материала из obj/mtl - ADVANCED mat
  • все мои антиалиазинги
  • vcm
  • все мои оптимизации(vm_hybridance, path_reuse)
  • удаление выделенных объектов
  • interactive preview(magic sampling)
будет как в keyshot, но по-новому и без progressive photon mapping

    суббота, 24 июня 2017 г.

    EDXRay. чтение материалов из obj/mtl

    не читались и не учитывались параметры материла:
    Ke - emissive color(r, g, b)
    Ni - IOR материала
    Ns - phong exponent
    Kt - transmissive color.

    сейчас все эти параметры запоминаются в свойствах материала.
    Ni, Kt учитываются при рендеринге:


    пока еще сложно даются рендеру материалы, у которых поровну Specular и Diffuse или Specular и Transmissive
    ошибка на картинке -
    статуе присвоен материал с
    Kd 1.000000 0.800000 0.800000
    Ks 0.2 0.2 0.2
    но используется только зеркальная(Ks - specular) составляющая.

    стеклянная сфера тоже передана не совсем верно
    newmtl Reflective
    Ns 96.078431
    Ka 0.000000 0.000000 0.000000
    Kd 0.0 0.0 0.0
    Ks 0.9 0.9 1.0
    Kt 0.9 0.9 1.0
    Ni 1.5
    d 1.000000
    illum 2
    а в рендере использовано только преломление(Kt - Transmission)

    пятница, 23 июня 2017 г.

    EDXRay. hairball.obj и hdri освещение

    нашёлся мне EDXRay - bidirectional path tracer, path tracer, multiplexed mlt с поддержкой disney brdf(по этой фразе его и нашёл), загружает obj, можно загрузить и повращать hdr.

    после чтения исходников удивительной находкой оказалось, что используется код smallVCM, на основе которого я писал свой рендер.
    в рендере также есть:
    • фильтры изображения MitchellNetravali, gaussian, box(без фильтрации)
    • adaptive sampling - галочка есть, а самого адаптив семплинга в коде нет
    • загрузка environment map(картинка для hdri освещения) интерактивно, в самой программе - в форматах JPEG, PNG, TGA, PSD, GIF, BMP, HDR, PIC, PNM, PPM, PGM. допишу еще pfm
    • сохраняет только в самописный BMP
    • RandomSampler, SobolSampler, Metropolis(фактически его нет, вызывается RandomSampler, сделано наверное для Multiplexed MLT - metropolis там единственный семплер)
    • StochasticPPM - не реализован - вызывается BidirPathTracingIntegrator😹
    • Camera Models

      • Thin Lens Model
      • Fisheye Camera
      • Realistic Camera Parameters
      • Arbitrarily Shaped Bokeh
      • Vignette and Cateye effect
    • Light Source

      • Point Light
      • Directional Light
      • Polygonal Area Light
      • Procedural Sky Light with Hosek Model
      • HDR Probe
    • Integrators

      • Volumetric Path Tracing - как его вызвать, я не понял. надо читать исходник Media/Homogeneous.cpp - похоже используется в phaseFunction HenyeyGreenstein
      • Bidirectional Path Tracing with Multiple Importance Sampling
      • Multiplexed Metroplis Light Transport
    • Materials

      • Lambertion Diffuse
      • Smooth Conductor
      • Smooth Dielectric
      • Rough Conductor
      • Rough Dielectric
      • Disney BRDF
        • Layered Material with Up to 2 Specular Coats
        • Cloth
      • Subsurface Scattering
        • BSSRDF based on Normalized Diffusion
        • Participating Media
      • Normal Map
      • Roughness Map
      • Alpha Test
    отлично сделан рендер. я автору написал "thanks for HUGE rework of smallVCM code"
    я писал свои модификации к оригинальному smallVCM, но в некоторых моментах я замечал, что сложно добавлять новые штуки. остановил разработку, смотрел как бы мне сделать более универсальный каркас. и перепробовал много исходников и оказывается, что автор EDXRay уже порезал и замиксовал на новый лад исходники smallVCM. сам алгоритм vcm в рендере не реализован. я допишу🐼
    также я планирую:
    • загрузку obj с помощью tinyobjloader
    • nanort для пересечения с треугольниками, сферами, curves, cones. сейчас поддерживается Embree для пересечения с треугольниками. сферы превращаются в треугольники
    • загрузка сцен в форматах ini, xml, rib, всех форматах, поддерживаемых assimp
    • реализовать материалы из obj, mtl, поддержка disney brdf из mtl

    суббота, 17 июня 2017 г.

    tinsel renderer and my speedup modifications

    tinsel renderer and my speedup modifications:
    • cpu only version. gpu version hardcoded off
    • openMP is added. on my 2-core cpu speedup to 160%(before openMP 4.7s per frame for ajax scene, after 2.9s) - more cores = faster
    • little bit speedup for disneyBRDF pdf calculation
    TODO:
    - nanoRT scene accelelerator
    - tinyobjloader with my speedups
    - lodePNG for save png
    - openCL version

    Features
    • Unbiased uni-directional path tracer
    • Disney's principled BRDF with importance sampling of diffuse and specular lobes
    • CPU or GPU tracing and shading with a persistent CUDA threads model
    • Interactive OpenGL progressive mode
    • Explicit area light sampling
    • Affine and deformable motion blur
    • Gaussian reconstruction filter
    • Instanced triangle mesh primitives with affine transformations
    • AABB tree with SAH and splitting
    • Simple scene description format
    • Windows / macOS / Linux support

      P.S. зачеркнутое - заявленное, но в коде нет этого




    available on github https://github.com/tigrazone/tinsel

    воскресенье, 11 июня 2017 г.

    embree и openexr. пустые страхи

    почему-то было у меня отторжение openEXR и Embree, особенно напрягался про то, что фиг соберёшь под linux и macOSx, но, почитав руководства по установке, становится понятно, что как раз windows-версия сложнее для установки и обновления под Visual Studio. под minGW можно наверное собрать из исходников openEXR и Embree.
    SmallUPBP очень уж неплохо работает.
    tinyexr можно оставить для записи файлов. неплохо сохраняет и файлы получаются меньше, чем сохраненные openEXR. буду его использовать чтоб не искать в настройках openEXR. может и openEXR у меня старый, только толстые файлы сохраняет.
    может я и лось и что-то недонастроил что с tinyexr, но но при загрузке exr для IBL - не видно результата, будто б exr чёрный.

    пятница, 9 июня 2017 г.

    pepelac. ibl from akari1

    после попыток прицепить IBL от upbp и неясного падения проги от этого, решил брать независимый исходник от akari1.
    к тому ж там есть importance sampled ibl для direct paths

    P.S. причиной падения оказался заход за границу массива. ох уж эти студенты с предустановленными значениями.
    заработало ibl-освещение. только новая напасть. освещение будто б черным светом. tinyexr шалит... или я чота сделал не так

    четверг, 8 июня 2017 г.

    density control for photon maps

    документ Density control for photon maps опубликован в 2000 году
    с 2001 года реализован в RenderPark
    подобное предлагали в 2014 году Jiří Vorba, Ondřej Karlík, Martin Šik, Tobias Ritschel, Jaroslav Křivánek в работе On-line Learning of Parametric Mixture Models for Light Transport Simulation
    да и в mental ray были importons
    и я сделаю
    если кратко - выпускаются сначала фотоны для оценки, куда их надо больше - небольшое количество и потом - по построенной карте - более грамотно запускаются фотоны для полноценного просчета

    понедельник, 5 июня 2017 г.

    akari2 vs gemspt

    gemspt подкупает тем, что поддерживает раздельно материалы diffuse, specular, glass и они содержат одинаковые методы, это упрощает и унифицирует подход к материалам.
    в akari2 только 2 материала - diffuse, specular/glossy.
    была идея перенести в gemspt хорошие решения из akari2, но я, просмотрев исходные тексты nanort/examples/path_tracer/, понял что лучше добавить более стандартную работу с материалами, разделив на компоненты

    https://github.com/githole/gemspt
    https://github.com/tigrazone/akari2