Initial commit
This commit is contained in:
122
Torque/SDK/lib/maxsdk40/samplers.h
Normal file
122
Torque/SDK/lib/maxsdk40/samplers.h
Normal file
@@ -0,0 +1,122 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
//
|
||||
// Sampler Plug-Ins
|
||||
//
|
||||
// Created 11/30/98 Kells Elmquist
|
||||
//
|
||||
|
||||
#ifndef SAMPLERS_H
|
||||
#define SAMPLERS_H
|
||||
|
||||
// Default Sampler ClassId
|
||||
#define R25_SAMPLER_CLASS_ID 0x25773211
|
||||
#define DEFAULT_SAMPLER_CLASS_ID R25_SAMPLER_CLASS_ID
|
||||
|
||||
|
||||
typedef ULONG MASK[2];
|
||||
|
||||
class ShadeContext;
|
||||
|
||||
typedef SFXParamDlg SamplerParamDlg;
|
||||
|
||||
class SamplingCallback : public InterfaceServer {
|
||||
public:
|
||||
// virtual BOOL SampleAtOffset( Color &col, Color &trans, Point2& sample, float sampleScale )=0;
|
||||
virtual BOOL SampleAtOffset( ShadeOutput* pOut, Point2& sample, float sampleScale )=0;
|
||||
};
|
||||
|
||||
class StdMat2;
|
||||
|
||||
class Sampler : public SpecialFX {
|
||||
public:
|
||||
RefResult NotifyRefChanged( Interval changeInt,
|
||||
RefTargetHandle hTarget,
|
||||
PartID& partID,
|
||||
RefMessage message ) { return REF_SUCCEED; }
|
||||
|
||||
SClass_ID SuperClassID() { return SAMPLER_CLASS_ID; }
|
||||
|
||||
// Saves and loads name. These should be called at the start of
|
||||
// a plug-in's save and load methods.
|
||||
IOResult Save(ISave *isave) { return SpecialFX::Save(isave); }
|
||||
IOResult Load(ILoad *iload) { return SpecialFX::Load(iload); }
|
||||
|
||||
// this samples a set of points over the area
|
||||
// this v3 call replaced by the more general v4 call below
|
||||
// virtual void DoSamples( Color& c, Color& t, SamplingCallback* cb,
|
||||
// ShadeContext* sc, MASK mask=NULL ){};
|
||||
|
||||
// this is the revised method. use this for all new samplers
|
||||
// if method supported, return TRUE;
|
||||
virtual void DoSamples( ShadeOutput* pOut, SamplingCallback* cb, ShadeContext* sc,
|
||||
MASK mask=NULL )=0;
|
||||
|
||||
// integer number of samples for current quality
|
||||
virtual int GetNSamples()=0; //what return when adaptive? n for max quality.
|
||||
|
||||
// This is the one default parameter
|
||||
// Quality is nominal, 0...1,
|
||||
// 0 is one sample, high about .75, 1.0 shd be awesome
|
||||
// for adaptive samplers, this sets the maximum quality
|
||||
virtual void SetQuality( float value )=0;
|
||||
virtual float GetQuality()=0;
|
||||
// returns 0 on "unchangeable", otherwise n quality levels
|
||||
virtual int SupportsQualityLevels()=0;
|
||||
|
||||
virtual void SetEnable( BOOL samplingOn )=0;
|
||||
virtual BOOL GetEnable()=0;
|
||||
|
||||
virtual TCHAR* GetDefaultComment()=0;
|
||||
|
||||
// Adaptive Sampling, non-reqd methods
|
||||
// there are various optional params, this defines which ones to show/enable
|
||||
virtual ULONG SupportsStdParams(){ return 0; }
|
||||
|
||||
// this determines whether to cut down the texture sample size of each sample,
|
||||
// or whether to always use 1 pixel texture sample size
|
||||
virtual void SetTextureSuperSampleOn( BOOL on ){}
|
||||
virtual BOOL GetTextureSuperSampleOn(){ return FALSE; }
|
||||
|
||||
virtual void SetAdaptiveOn( BOOL on ){}
|
||||
virtual BOOL IsAdaptiveOn(){ return FALSE; }
|
||||
|
||||
virtual void SetAdaptiveThreshold( float value ){}
|
||||
virtual float GetAdaptiveThreshold(){ return 0.0f; }
|
||||
|
||||
// there are 2 optional 0.0...max parameters, for whatever
|
||||
virtual long GetNOptionalParams(){ return 0; }
|
||||
virtual TCHAR * GetOptionalParamName( long nParam ){ return _T(""); }
|
||||
virtual float GetOptionalParamMax( long nParam ){ return 1.0f; }
|
||||
virtual float GetOptionalParam( long nParam ){ return 0.0f; };
|
||||
virtual void SetOptionalParam( long nParam, float val ){};
|
||||
|
||||
// Put up a modal pop-up dialog that allows editing the sampler extended
|
||||
virtual void ExecuteParamDialog(HWND hWndParent, StdMat2* mtl ){}
|
||||
|
||||
// Implement this if you are using the ParamMap2 AUTO_UI system and the
|
||||
// effect has secondary dialogs that don't have the sampler as their 'thing'.
|
||||
// Called once for each secondary dialog for you to install the correct thing.
|
||||
// Return TRUE if you process the dialog, false otherwise.
|
||||
virtual BOOL SetDlgThing(EffectParamDlg* dlg) { return FALSE; }
|
||||
};
|
||||
|
||||
// There are the standard parameters for samplers
|
||||
#define IS_ADAPTIVE 0x1 // adaptive in some way
|
||||
#define ADAPTIVE_CHECK_BOX 0x2 // enable adaptive check box
|
||||
#define ADAPTIVE_THRESHOLD 0x4 // enable adaptive threshold spinner
|
||||
#define SUPER_SAMPLE_TEX_CHECK_BOX 0x8 // enable texture subsampling check box
|
||||
#define ADVANCED_DLG_BUTTON 0x10 // enable advanced button
|
||||
#define OPTIONAL_PARAM_0 0x20 // enable optional spinner
|
||||
#define OPTIONAL_PARAM_1 0x40 // enable optional spinner
|
||||
|
||||
#define R3_ADAPTIVE (IS_ADAPTIVE+ADAPTIVE_CHECK_BOX+ADAPTIVE_THRESHOLD)
|
||||
|
||||
// Chunk IDs saved by base class
|
||||
#define SAMPLERBASE_CHUNK 0x39bf
|
||||
#define SAMPLERNAME_CHUNK 0x0100
|
||||
#define SAMPLER_VERS_CHUNK 0x0200
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user