Absorption and Dispersion parameters now only visible when 'Ray Transp'
enabled. WardIso specular amount scale to match Blender output.
Updated halo spotlight 'samples' to use new yafray syntax.
Quick addition for access to another yafray feature:
When using HDR backgrounds for lighting ('SkyDome' of 'Full' GI methods),
it is currently not always possible to get smooth lighting results.
Especially HDR images with small lightsource can be very noisy,
because currently yafray still relies on brute force random sampling.
As a temporary simple solution (better options will be available in the
'next generation' yafray), yafray can do some processing on the
image to smooth out all (or most) noise.
Besides smooth lighting, this also has
the advantage that AA will have less work to do,
GI quality can be set to the lowest level and still get reasonably
good results. Disadvantage however is that shadow definition is lost.
To switch on this option, set the world image texture filter parameter
to any value greater than 1.0
When 'filter' is 1.0 or less, normal hdr sampling is done as before.
So, current fastest possible render settings for IBL:
set texture image filter parameter of the background image to any value
greater than 1.0, set GI to 'SkyDome' type, enable 'Cache',
(possibly enable 'NoBump' when scene uses lots of bumpmapping),
set 'Quality' menu to 'Use Blender AO settings',
make sure AO is enabled in blender World buttons and set there the number
of AO samples to 1.
Should at least be good enough for previews.
78 lines
2.4 KiB
C++
78 lines
2.4 KiB
C++
#ifndef __EXPORT_PLUGIN_H
|
|
#define __EXPORT_PLUGIN_H
|
|
|
|
#include"yafray_Render.h"
|
|
#include"yafexternal.h"
|
|
extern "C"
|
|
{
|
|
#include"PIL_dynlib.h"
|
|
}
|
|
|
|
class yafrayPluginRender_t : public yafrayRender_t
|
|
{
|
|
public:
|
|
yafrayPluginRender_t()
|
|
{
|
|
plugin_loaded = false;
|
|
handle=NULL;
|
|
#ifdef WIN32
|
|
corehandle=NULL;
|
|
#endif
|
|
yafrayGate=NULL;
|
|
}
|
|
virtual ~yafrayPluginRender_t();
|
|
protected:
|
|
bool plugin_loaded;
|
|
std::string imgout;
|
|
PILdynlib *handle;
|
|
#ifdef WIN32
|
|
PILdynlib *corehandle;
|
|
#endif
|
|
|
|
yafray::yafrayInterface_t *yafrayGate;
|
|
|
|
void displayImage();
|
|
virtual void writeTextures();
|
|
virtual void writeShader(const std::string &shader_name, Material* matr, const std::string &facetexname="");
|
|
virtual void writeMaterialsAndModulators();
|
|
virtual void writeObject(Object* obj,
|
|
const std::vector<VlakRen*> &VLR_list, const float obmat[4][4]);
|
|
virtual void writeAllObjects();
|
|
virtual void writeAreaLamp(LampRen* lamp, int num, float iview[4][4]);
|
|
virtual void writeLamps();
|
|
virtual void writeCamera();
|
|
virtual void writeHemilight();
|
|
virtual void writePathlight();
|
|
virtual bool writeWorld();
|
|
virtual bool writeRender();
|
|
virtual bool initExport();
|
|
virtual bool finishExport();
|
|
|
|
void genUVcoords(std::vector<yafray::GFLOAT> &uvcoords,VlakRen *vlr,TFace* uvc, bool comple=false);
|
|
void genVcol(std::vector<yafray::CFLOAT> &vcol, VlakRen *vlr, bool comple=false);
|
|
void genFace(std::vector<int> &faces,std::vector<std::string> &shaders,std::vector<int> &faceshader,
|
|
std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol,
|
|
std::map<VertRen*, int> &vert_idx,VlakRen *vlr,
|
|
bool has_orco,bool has_uv);
|
|
void genCompleFace(std::vector<int> &faces,/*std::vector<std::string> &shaders,*/std::vector<int> &faceshader,
|
|
std::vector<yafray::GFLOAT> &uvcoords,std::vector<yafray::CFLOAT> &vcol,
|
|
std::map<VertRen*, int> &vert_idx,VlakRen *vlr,
|
|
bool has_orco,bool has_uv);
|
|
void genVertices(std::vector<yafray::point3d_t> &verts, int &vidx,
|
|
std::map<VertRen*, int> &vert_idx, VlakRen* vlr, bool has_orco, Object* obj);
|
|
};
|
|
|
|
class blenderYafrayOutput_t : public yafray::colorOutput_t
|
|
{
|
|
public:
|
|
blenderYafrayOutput_t() {out=0;};
|
|
virtual ~blenderYafrayOutput_t() {};
|
|
virtual bool putPixel(int x, int y,const yafray::color_t &c,
|
|
yafray::CFLOAT alpha=0,yafray::PFLOAT depth=0);
|
|
virtual void flush() {};
|
|
protected:
|
|
int out;
|
|
};
|
|
|
|
#endif
|