Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void bindImageGreyScale(C3D_Tex *texture, u32 texture_color) {
- //((0.3 * R) + (0.59 * G) + (0.11 * B)). -> 0xFF1C964C
- C3D_TexEnv *env;
- u32 greyMask = 0xFF1C964C;
- C3D_TexBind(0, texture);
- env = C3D_GetTexEnv(0);
- TexEnv_Init(env);
- C3D_TexEnvSrc(env, C3D_RGB, GPU_TEXTURE0, GPU_CONSTANT, 0);
- C3D_TexEnvSrc(env, C3D_Alpha, GPU_TEXTURE0, 0, 0);
- C3D_TexEnvOp(env, C3D_Both, 0, 0, 0);
- C3D_TexEnvFunc(env, C3D_RGB, GPU_MODULATE);
- C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
- C3D_TexEnvColor(env, texture_color);
- env = C3D_GetTexEnv(1);
- TexEnv_Init(env);
- C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_CONSTANT, 0);
- C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
- C3D_TexEnvOp(env, C3D_Both, 0, 0, 0);
- C3D_TexEnvFunc(env, C3D_RGB, GPU_MODULATE);
- C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
- C3D_TexEnvColor(env, greyMask);
- C3D_TexEnvBufUpdate(C3D_RGB, 0b0010);
- env = C3D_GetTexEnv(2);
- TexEnv_Init(env);
- C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_PREVIOUS, 0);
- C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
- C3D_TexEnvOp(env, C3D_RGB, GPU_TEVOP_RGB_SRC_R, GPU_TEVOP_RGB_SRC_G, 0);
- C3D_TexEnvOp(env, C3D_Alpha, 0, 0, 0);
- C3D_TexEnvFunc(env, C3D_RGB, GPU_ADD);
- C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
- env = C3D_GetTexEnv(3);
- TexEnv_Init(env);
- C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_PREVIOUS_BUFFER, 0);
- C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
- C3D_TexEnvOp(env, C3D_RGB, 0, GPU_TEVOP_RGB_SRC_B, 0);
- C3D_TexEnvOp(env, C3D_Alpha, 0, 0, 0);
- C3D_TexEnvFunc(env, C3D_RGB, GPU_ADD);
- C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement