![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif) namespace esl {
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) class shader {
public:
virtual int query() = 0;
virtual void deletethis() = 0;
};
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) class surface : public shader {
public:
virtual int query()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
return default_surface_query;
}
};
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) template < typename T > class ptr {
public:
![](/Images/OutliningIndicators/InBlock.gif)
};
![](/Images/OutliningIndicators/InBlock.gif)
void ei_declare_shader( ei_shader_type shader_type,
const ei_string shader_name,
)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
va_list args;
int para;
static_parameter_container spcon;
dynamic_parameter_container dpcon;
parameter_container *cpcon = NULL;
ei_string str;
float fval;
![](/Images/OutliningIndicators/InBlock.gif)
va_start( args, shader_name );
![](/Images/OutliningIndicators/InBlock.gif)
while(1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
para = va_arg( args, int );
![](/Images/OutliningIndicators/InBlock.gif)
if( para == ei_end )
break;
![](/Images/OutliningIndicators/InBlock.gif)
switch( para )
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
case ei_static:
cpcon = &spcon;
break;
case ei_dynamic:
cpcon = &dpcon;
break;
case ei_float:
str = va_arg( args, ei_string );
fval = va_arg( args, float );
cpcon->add_float( str, fval );
break;
case ei_int:
break;
case ei_bool:
break;
case ei_color:
break;
case ei_point:
break;
case ei_vector:
break;
case ei_normal:
break;
case ei_matrix:
break;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
va_end( args );
}
![](/Images/OutliningIndicators/InBlock.gif)
void ei_shader( const ei_string named_shader,
const ei_string shader_name,
)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
va_list args;
ei_string str;
int type;
int pos;
ptr<float> fval;
shader_instance *inst;
![](/Images/OutliningIndicators/InBlock.gif)
va_start( args, shader_name );
![](/Images/OutliningIndicators/InBlock.gif)
while(1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
str = va_arg( args, ei_string );
![](/Images/OutliningIndicators/InBlock.gif)
if( str == ei_end )
break;
![](/Images/OutliningIndicators/InBlock.gif)
inst->lookup( str, type, pos );
![](/Images/OutliningIndicators/InBlock.gif)
switch( type )
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
case ei_float:
fval = va_arg( args, ptr<float> );
inst->set_float( pos, fval );
break;
case ei_int:
break;
case ei_bool:
break;
case ei_color:
break;
case ei_point:
break;
case ei_vector:
break;
case ei_normal:
break;
case ei_matrix:
break;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
va_end( args );
}
![](/Images/OutliningIndicators/InBlock.gif)
};
|