00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __OBJ_Light_h__
00021 #define __OBJ_Light_h__
00022
00023 #include "OBJ_API.h"
00024 #include "OBJ_Ambient.h"
00025
00026 class obj_Scene;
00027 class IFD_LightParms;
00028 class RE_Light;
00029 class OP_Bundle;
00030
00031 enum OBJ_LightIndex
00032 {
00033
00034 I_N_LIGHT_INDICES = I_N_AMB_INDICES
00035 };
00036
00037
00038 enum OBJ_LightAutogen {
00039 OBJ_LIGHT_AUTO_NONE = 0,
00040 OBJ_LIGHT_AUTO_MID,
00041 OBJ_LIGHT_AUTO_NEAR,
00042 OBJ_LIGHT_AUTO_FAR,
00043 OBJ_LIGHT_AUTO_DEEP,
00044 OBJ_LIGHT_AUTO_DEEP_INTERP,
00045 OBJ_LIGHT_AUTO_MINMAX
00046 };
00047
00048 class OBJ_API OBJ_Light : public OBJ_Ambient
00049 {
00050 public:
00051 OBJ_Light(OP_Network *, const char *, OP_Operator *);
00052 virtual ~OBJ_Light();
00053
00054 static PRM_Template *getObsolete();
00055 static OP_Node *myConstructor(OP_Network *net,
00056 const char *name, OP_Operator *entry);
00057
00058 virtual OBJ_OBJECT_TYPE getObjectType() const;
00059
00060 virtual unsigned disableParms();
00061 virtual void getIFDParms(IFD_ObjectParms &parms, float t,
00062 const char *rtype);
00063 virtual void getIFDParms(IFD_LightParms &parms, float t,
00064 const char *rtype);
00065 virtual void getIFDParms(IFD_CameraParms &parms, float t,
00066 const char *rtype);
00067 virtual int isObjectShadower(OBJ_Node *obj, float t);
00068 virtual int isSubnetShadower(OBJ_Node *subnet, float t);
00069 virtual void updateLightValue(float t);
00070
00071
00072
00073 virtual void rmanBestShader(UT_String &str, float t);
00074 virtual void vexBestShader(UT_String &str, float t);
00075 virtual void vexBestShadow(UT_String &str, float t);
00076
00077 virtual void resolveObsoleteParms(
00078 PRM_ParmList *obsolete_parms);
00079
00080 OP_Bundle *getShadowMaskBundle(float t);
00081
00082 void SHADOWTYPE(UT_String &str, fpreal t);
00083 void SHADOWMASK(UT_String &str, fpreal t);
00084 void AUTOGEN(UT_String &str, fpreal t);
00085 void DEPTHMAP(UT_String &str, fpreal t);
00086 int DEPTHSAMPLEX(fpreal t);
00087 int DEPTHSAMPLEY(fpreal t);
00088 int DEPTHBLUR(fpreal t);
00089 int DEEP(fpreal t);
00090 void DEPTHQUANT(UT_String &str, fpreal t);
00091 int MINMAX(fpreal t);
00092 void DEEPSTYLE(UT_String &str, fpreal t);
00093 void OFSTORAGE(UT_String &str, fpreal t);
00094 void PZSTORAGE(UT_String &str, fpreal t);
00095 int DEPTHCOMPRESSION(fpreal t);
00096 fpreal DEPTHZBIAS(fpreal t);
00097 int DEPTHOFSIZE(fpreal t);
00098 void SPECMAP(UT_String &str, fpreal t);
00099 void DIFFMAP(UT_String &str, fpreal t);
00100 void PROJMAP(UT_String &str, fpreal t);
00101 int CLAMP_PROJMAP(fpreal t);
00102 int USEACTIVERADIUS(fpreal t);
00103 int CONELIGHT(fpreal now);
00104 fpreal CONEANGLE(fpreal t);
00105 fpreal CONEDELTA(fpreal t);
00106 fpreal CONEROLL(fpreal t);
00107 void TATTEN(UT_String &str, fpreal t);
00108 fpreal ATTEN(fpreal t);
00109 fpreal SPREAD(fpreal t);
00110 fpreal REFLECTX(fpreal t);
00111 fpreal REFLECTY(fpreal t);
00112 int DIFFUSE(fpreal t);
00113 int SPECULAR(fpreal t);
00114 int PHOTONDIRECT(fpreal t);
00115 fpreal ENERGYR(fpreal t);
00116 fpreal ENERGYG(fpreal t);
00117 fpreal ENERGYB(fpreal t);
00118 fpreal EXPONENT(fpreal t);
00119 int CPHOTONSSTORE(fpreal t);
00120 int CPHOTONSEMIT(fpreal t);
00121 int GIPHOTONSSTORE(fpreal t);
00122 int GIPHOTONSEMIT(fpreal t);
00123 void AREASHAPE(UT_String &str, fpreal t);
00124 fpreal AREASAMPLES(fpreal t);
00125 fpreal AREASIZE(fpreal t);
00126
00127 static PRM_Template *getTemplateList(OBJ_ParmsStyle style);
00128
00129 virtual void saveDialogScriptExtraInfo(ostream &os);
00130
00131 virtual OBJ_Light *castToOBJLight() { return this; }
00132 virtual int collectPropertiesFromChannels(PI_EditScriptedParms &,
00133 UT_BitArray &selection,
00134 const CH_ChannelList &channels);
00135 virtual int collectPropertiesFromParms(PI_EditScriptedParms &,
00136 UT_StringArray &names,
00137 PRM_ParmNameMap &nmap);
00138
00139 protected:
00140
00141 virtual int *getIndirect() const
00142 { return lightIndirect; }
00143
00144 private:
00145 static int *lightIndirect;
00146 char *mySavedProjectMap;
00147 float mySavedConeRoll;
00148 float mySavedConeAngle;
00149 float mySavedConeDelta;
00150 unsigned mySavedConeOn:1;
00151 };
00152
00153 #endif