1.默认渲染框架
文件Framework3D_DefaultRender.cginc说明: 该库封装了基本raymarching渲染,常用于测试SDF建模, 只需要自己定义Map函数(SDF描述),用于构建整个场景。
如果想要使用默认的渲染
可以在shader中使用这几个宏即可
#define DEFAULT_RENDER
#define DEFAULT_MAT_COL
#define DEFAULT_PROCESS_FRAG
如果需要需要进行自定义着色 重新定义
float3 MatCol(float matID,float3 pos,float3 nor);
float2 Map( in float3 pos );
float3 Render( in float3 ro, in float3 rd );
这几个函数即可
//Framework3D_DefaultRender.cginc
float3 MatCol(float matID,float3 pos,float3 nor);
float2 Map( in float3 pos );
float3 Render( in float3 ro, in float3 rd );
#ifdef DEFAULT_RENDER
float3 Render( in float3 ro, in float3 rd )
{
float3 col = float3(0.7, 0.9, 1.0) +rd.y*0.8;
...
}
#endif
#ifdef DEFAULT_MAT_COL
float3 MatCol(float matID,float3 pos,float3 nor)
{
// material
float3 col = 0.45 + 0.35*sin( float3(0.05,0.08,0.10)*(matID-1.0) );
if( matID<1.5 )
{
float f = CheckersGradBox( 5.0*pos.xz );
col = 0.3 + f*float3(0.1,0.1,0.1);
}
return col;
}
#endif
#ifdef DEFAULT_PROCESS_FRAG
float4 ProcessRayMarch(float2 uv,float3 ro,float3 rd,inout float sceneDep,float4 sceneCol) {
// render
float3 col = Render( ro, rd );
// gamma
col = pow( col, float3(0.4545,0.4545,0.4545) );
sceneCol.xyz = col;
return sceneCol;
}
#endif