ai_shader_brdf.h
1 /*
2  * Arnold API header file
3  * Copyright (c) 1998-2009 Marcos Fajardo, (c) 2009-2013 Solid Angle SL
4  */
5 
11 #pragma once
12 #include "ai_color.h"
13 #include "ai_vector.h"
14 #include "ai_shaderglobals.h"
15 
32 typedef AtVector(*AtBRDFEvalSampleFunc)(const void* brdf_data, float rx, float ry);
34 typedef AtColor (*AtBRDFEvalBrdfFunc)(const void* brdf_data, const AtVector* indir);
36 typedef float (*AtBRDFEvalPdfFunc)(const void* brdf_data, const AtVector* indir);
37 /* \}*/
38 
42 AI_API AtColor AiEvaluateLightSample(AtShaderGlobals* sg, const void* brdf_data, AtBRDFEvalSampleFunc eval_sample, AtBRDFEvalBrdfFunc eval_brdf, AtBRDFEvalPdfFunc eval_pdf);
43 AI_API AtColor AiBRDFIntegrate(AtShaderGlobals *sg, const void *brdf_data, AtBRDFEvalSampleFunc eval_sample, AtBRDFEvalBrdfFunc eval_brdf, AtBRDFEvalPdfFunc eval_pdf, AtUInt16 ray_type);
44 /* \}*/
45 
49 AI_API AtColor AiOrenNayarMISBRDF(const void* brdf_data, const AtVector* indir);
50 AI_API float AiOrenNayarMISPDF(const void* brdf_data, const AtVector* indir);
51 AI_API AtVector AiOrenNayarMISSample(const void* brdf_data, float randx, float randy);
52 AI_API void* AiOrenNayarMISCreateData(const AtShaderGlobals* sg, float r);
53 
54 AI_API AtColor AiCookTorranceMISBRDF(const void* brdf_data, const AtVector* indir);
55 AI_API float AiCookTorranceMISPDF(const void* brdf_data, const AtVector* indir);
56 AI_API AtVector AiCookTorranceMISSample(const void* brdf_data, float randx, float randy);
57 AI_API void* AiCookTorranceMISCreateData(const AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
58 
59 AI_API AtColor AiWardDuerMISBRDF(const void* brdf_data, const AtVector* indir);
60 AI_API float AiWardDuerMISPDF(const void* brdf_data, const AtVector* indir);
61 AI_API AtVector AiWardDuerMISSample(const void* brdf_data, float randx, float randy);
62 AI_API void* AiWardDuerMISCreateData(const AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
63 
64 AI_API AtColor AiAshikhminShirleyMISBRDF(const void* brdf_data, const AtVector* indir);
65 AI_API float AiAshikhminShirleyMISPDF(const void* brdf_data, const AtVector* indir);
66 AI_API AtVector AiAshikhminShirleyMISSample(const void* brdf_data, float randx, float randy);
67 AI_API void* AiAshikhminShirleyMISCreateData(const AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
68 
69 AI_API AtColor AiStretchedPhongMISBRDF(const void* brdf_data, const AtVector* indir);
70 AI_API float AiStretchedPhongMISPDF(const void* brdf_data, const AtVector* indir);
71 AI_API AtVector AiStretchedPhongMISSample(const void* brdf_data, float randx, float randy);
72 AI_API void* AiStretchedPhongMISCreateData(const AtShaderGlobals* sg, float pexp);
73 /* \}*/
74 
78 AI_API float AiOrenNayarBRDF (const AtVector* L, const AtVector* V, const AtVector* N, float r);
79 AI_API float AiLommelSeeligerBRDF (const AtVector* L, const AtVector* V, const AtVector* N);
80 AI_API float AiCookTorranceBRDF (const AtVector* L, const AtVector* V, const AtVector* N, const AtVector* u, const AtVector* v, float rx, float ry);
81 AI_API float AiWardBRDF (const AtVector* L, const AtVector* V, const AtVector* N, const AtVector* u, const AtVector* v, float rx, float ry);
82 AI_API float AiWardDuerBRDF (const AtVector* L, const AtVector* V, const AtVector* N, const AtVector* u, const AtVector* v, float rx, float ry);
83 AI_API float AiAshikhminShirleyBRDF(const AtVector* L, const AtVector* V, const AtVector* N, const AtVector* u, const AtVector* v, float nx, float ny);
84 AI_API float AiStretchedPhongBRDF (const AtVector* L, const AtVector* V, const AtVector* N, float n, bool retro = false);
85 /* \}*/
86 
90 AI_API AtColor AiOrenNayarIntegrate(const AtVector* N, AtShaderGlobals* sg, float r);
92 AI_API AtColor AiCookTorranceIntegrate(const AtVector* N, AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
93 AI_API AtColor AiWardIntegrate(const AtVector* N, AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
94 AI_API AtColor AiWardDuerIntegrate(const AtVector* N, AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry);
95 AI_API AtColor AiAshikhminShirleyIntegrate(const AtVector* N, AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float nx, float ny);
96 AI_API AtColor AiMicrofacetBTDFIntegrate(const AtVector* N, AtShaderGlobals* sg, const AtVector* u, const AtVector* v, float rx, float ry, float eta_i, float eta_o, AtColor transmittance);
97 AI_API AtColor AiStretchedPhongIntegrate(const AtVector* N, AtShaderGlobals* sg, float exp);
98 /* \}*/
99 
100 /*\}*/

© 2009-2013 Solid Angle SL · all rights reserved · www.solidangle.com