Code:
mi_query( miQ_INST_ITEM,NULL,*light,&realLight);
mi_query( miQ_LIGHT_SHADER, state, realLight, &shaderTag );
mi_query( miQ_FUNC_PARAM, state, shaderTag, &values );
mi_query( miQ_FUNC_PARAM_SIZE, state, shaderTag, ¶msSize );
mi_query( miQ_FUNC_DECL, state, shaderTag, &shaderDeclTag );
mi_query( miQ_DECL_PARAM, state, shaderDeclTag, ¶ms );
char *tmp,*token;
token= mi_mem_allocate(sizeof(char)*(strlen(params)+1));
strcpy(token,params);
offset=0;
tmp = strtok(token, "\"");
while(tmp!=NULL)
{
if(strcmp(tmp,"color")==0) break;
if(strcmp(tmp,"c")==0) offset += 16;
if(strcmp(tmp,"b")==0||strcmp(tmp,"s")==0||strcmp(tmp,"$")==0||strcmp(tmp,"i")==0||strcmp(tmp,"al")==0) offset += 4;
if(strcmp(tmp,"v")==0) offset += 12;
tmp = strtok(NULL,"\"");
}
mi_warning("Values: %f", *((miScalar*)(values+offset)) );
mi_mem_release(token);
ah, I got it.
So, does this way work well? I mean, in order to get diffuse pass without shadow, is there any better way?