Advertisement
PabloMK7

Texture to greyscale

Apr 9th, 2018
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.59 KB | None | 0 0
  1. static void bindImageGreyScale(C3D_Tex *texture, u32 texture_color) {
  2.     //((0.3 * R) + (0.59 * G) + (0.11 * B)). -> 0xFF1C964C
  3.     C3D_TexEnv  *env;
  4.     u32 greyMask = 0xFF1C964C;
  5.  
  6.     C3D_TexBind(0, texture);
  7.     env = C3D_GetTexEnv(0);
  8.     TexEnv_Init(env);
  9.     C3D_TexEnvSrc(env, C3D_RGB, GPU_TEXTURE0, GPU_CONSTANT, 0);
  10.     C3D_TexEnvSrc(env, C3D_Alpha, GPU_TEXTURE0, 0, 0);
  11.     C3D_TexEnvOp(env, C3D_Both, 0, 0, 0);
  12.     C3D_TexEnvFunc(env, C3D_RGB, GPU_MODULATE);
  13.     C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
  14.     C3D_TexEnvColor(env, texture_color);
  15.     env = C3D_GetTexEnv(1);
  16.     TexEnv_Init(env);
  17.     C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_CONSTANT, 0);
  18.     C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
  19.     C3D_TexEnvOp(env, C3D_Both, 0, 0, 0);
  20.     C3D_TexEnvFunc(env, C3D_RGB, GPU_MODULATE);
  21.     C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
  22.     C3D_TexEnvColor(env, greyMask);
  23.     C3D_TexEnvBufUpdate(C3D_RGB, 0b0010);
  24.     env = C3D_GetTexEnv(2);
  25.     TexEnv_Init(env);
  26.     C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_PREVIOUS, 0);
  27.     C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
  28.     C3D_TexEnvOp(env, C3D_RGB, GPU_TEVOP_RGB_SRC_R, GPU_TEVOP_RGB_SRC_G, 0);
  29.     C3D_TexEnvOp(env, C3D_Alpha, 0, 0, 0);
  30.     C3D_TexEnvFunc(env, C3D_RGB, GPU_ADD);
  31.     C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
  32.     env = C3D_GetTexEnv(3);
  33.     TexEnv_Init(env);
  34.     C3D_TexEnvSrc(env, C3D_RGB, GPU_PREVIOUS, GPU_PREVIOUS_BUFFER, 0);
  35.     C3D_TexEnvSrc(env, C3D_Alpha, GPU_PREVIOUS, 0, 0);
  36.     C3D_TexEnvOp(env, C3D_RGB, 0, GPU_TEVOP_RGB_SRC_B, 0);
  37.     C3D_TexEnvOp(env, C3D_Alpha, 0, 0, 0);
  38.     C3D_TexEnvFunc(env, C3D_RGB, GPU_ADD);
  39.     C3D_TexEnvFunc(env, C3D_Alpha, GPU_REPLACE);
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement