Korchy (korchy) wrote,
Korchy
korchy

Blender, OSL: Процедурная текстура Checker






#include "stdosl.h"
#include "node_texture.h"

float checker(point p) {
   p[0] = (p[0]+0.00001)*0.9999;
   p[1] = (p[1]+0.00001)*0.9999;
   p[2] = (p[2]+0.00001)*0.9999;

   int xi = (int)fabs(floor(p[0]));
   int yi = (int)fabs(floor(p[1]));
   int zi = (int)fabs(floor(p[2]));

   if((xi%2==yi%2)==(zi%2)) {
      return 1.0;
   }
   else {
      return 0.0;
   }

}

shader node_checker_texture (
   float Scale = 5.0,
   point Vector = P,
   color Color1 = color(0.8,0.8,0.8),
   color Color2 = color(0.2,0.2,0.2),
   output float Fac = 0.0,
   output color Color = color(0.0,0.0,0.0))
   {
      Fac = checker(Vector*Scale);
      if(Fac==1.0) {
         Color = Color1;
      }
      else {
         Color = Color2;
      }
   }

Источник

Tags: blender_tips, cycles, osl
Subscribe

Comments for this post were disabled by the author