1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#ifndef __YAFRAY_RENDER_H
#define __YAFRAY_RENDER_H
#ifdef __cplusplus
extern "C" {
#endif
#include "MEM_guardedalloc.h"
#include "IMB_imbuf_types.h"
#include "DNA_camera_types.h"
#include "DNA_group_types.h"
#include "DNA_image_types.h"
#include "DNA_lamp_types.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_texture_types.h"
#include "DNA_userdef_types.h"
#include "DNA_world_types.h"
#include "BKE_global.h"
#include "render_types.h"
#include "renderdatabase.h"
/* display_draw() needs render layer info */
#include "renderpipeline.h"
/* useful matrix & vector operations */
#include "BLI_arithb.h"
#include "BLI_blenlib.h"
/* need error(), so extern declare here */
extern void error (char *fmt, ...);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
#include <iostream>
#include <iomanip>
#include <sstream>
#include <fstream>
#include <map>
#include <string>
#include <vector>
#include <set>
class yafrayObjectRen {
public:
std::vector<VlakRen*> faces;
ObjectRen *obr;
};
class yafrayRender_t
{
public:
// ctor
yafrayRender_t() {}
// dtor
virtual ~yafrayRender_t() {}
// mtds
bool exportScene(Render* re);
void addDupliMtx(Object* obj, float mat[][4]);
bool objectKnownData(Object* obj);
protected:
Render* re;
Object* maincam_obj;
float mainCamLens;
bool hasworld;
std::map<Object*, yafrayObjectRen> all_objects;
std::map<std::string, Material*> used_materials;
std::map<std::string, MTex*> used_textures;
std::map<std::string, std::vector<float> > dupliMtx_list;
std::map<std::string, Object*> dup_srcob;
std::map<void*, Object*> objectData;
std::map<Image*, std::set<Material*> > imagetex;
std::map<std::string, std::string> imgtex_shader;
bool getAllMatTexObs();
virtual void writeTextures()=0;
virtual void writeShader(const std::string &shader_name, Material* matr, const std::string &facetexname)=0;
virtual void writeMaterialsAndModulators()=0;
virtual void writeObject(Object* obj, ObjectRen *obr, const std::vector<VlakRen*> &VLR_list, const float obmat[4][4])=0;
virtual void writeAllObjects()=0;
virtual void writeLamps()=0;
virtual void writeCamera()=0;
virtual void writeAreaLamp(LampRen* lamp, int num, float iview[4][4])=0;
virtual void writeHemilight()=0;
virtual void writePathlight()=0;
virtual bool writeWorld()=0;
virtual bool writeRender()=0;
virtual bool initExport()=0;
virtual bool finishExport()=0;
void clearAll();
};
#endif
#endif /*__YAFRAY_RENDER_H */
|