Clone or download
Latest commit 20786eb Oct 15, 2018
Failed to load latest commit information.
.spelling rules.php - changed constant vars to defined constants Nov 25, 2017
afanasy af.Job.setEnv fixed #420 Oct 15, 2018
bin documentation and forum commands to open/show in web browser Jan 18, 2017
examples Afanasy: command&files pattern is processed in a Python service class. Sep 3, 2018
icons New: Added Maya Redshift support. Mar 20, 2017
lib Updated to the latest (github master) May 4, 2018
plugins houdini: job branch and minimum run time parameter added Jun 26, 2018
rules rules shot_process colorspace Aug 31, 2018
rules_root rules: some paths Oct 4, 2016
software_setup Nuke: if it was not found in the default folder, launcher just exits May 27, 2018
start afermer scripts windows fix Mar 14, 2017
utilities ubuntu18 moved on pyqt5 Oct 15, 2018
.clang-format refactored lib/js/cgru.js Nov 12, 2017
.gitignore Added ignores for autogenerated files Nov 8, 2017 added information about file header description to Nov 16, 2017
config_default.json afserver: user af_max_run_tasks_per_host and af_jobs_life_time config… Aug 20, 2018
favicon.ico js: software icons images preload Sep 10, 2012
htaccess_example cgru keeper can launch commands parsed from HTTP protocol. Sep 14, 2016
index.html rules: each playlist item has an own delete button Jul 17, 2018
player.html fixed typos in index.html and player.html Oct 13, 2017
rules.php Rules: Uoload error got a detailed description Mar 20, 2018
setup.cmd windows release issues Apr 25, 2016 mrproper on setup scripts Dec 1, 2015
setup_README.cmd project from sourceforge subversion added Mar 13, 2012 project from sourceforge subversion added Mar 13, 2012
setup_afanasy.cmd config default mistake, cmake project clear keeps .gitignore Mar 19, 2012 libafapi and libpyaf projects removed Apr 14, 2012
setup_python.cmd Fixed compatibility with a new, PySide2 and Qt-11 May 4, 2018 cgru: POSIX way for equality (work for zsh and bash) Jan 17, 2017
start.cmd project from sourceforge subversion added Mar 13, 2012
start.command project from sourceforge subversion added Mar 13, 2012 project from sourceforge subversion added Mar 13, 2012
version.txt it is 2.3 since network binary protocol changed and it is not compati… Jun 6, 2017


CGRU is the Computer Graphics Tools Pack.

It consists of the main tools Afanasy and Rules. Other tools are arranged as satellites around these two, like dailies encoding scripts and software submission plug-ins.

Afanasy is a render farm manager.

Rules is a Web based CG projects tracker.



You can ask any questions on the CGRU forum.

GitHub issues are used for code development and bug tracking.

Coding rules:

  • Indentation - TABS. You can vary tab length, default 4 spaces length is normal.
    • Python Indentation - SPACES(4). It is not a problem to tune any modern text editor for each file type.
  • Code alignment - SPACES, it should not break on various tab length.
  • Variable names: variable_name.
  • Function names: functionName.
  • Class names: ClassName.
  • Use prefixes to make code more readable:
    • i_ - Input variables.
    • o_ - Output variables.
    • m_ - Class members.
    • ms_ - Static class members.
    • g_ - External variables.
    • v_ - Virtual functions.
  • Do not use "!" as NOT, since it is not noticeable for doing code review. It is much more easy to notice false ==.
  • Use false == var and NULL == val instead of var == false or var == NULL. As if you miss one '=' character, it will not be an error, it will be assignment, not comparison.
  • Use const & to pass complex types as function parameters to not to copy class instance.


// Function with long parameters list:
bool someFunction(std::string &o_status, const std::string &i_param1, const std::string &i_param2,
	const std::string &i_param3, const std::string &i_param4)

	if (false == variable_name)
		o_status = "error";
		return false;
	return true;

You will notice, that some parts of the code are not following these rules. This is mostly because such code has been written before these rules were created or changed.

The typical file header and code style for C++ and JS files can automatically be applied with the script utilities/maintenance/codeStyleCheck.php see the file for instructions of setup and usage.

The file header shall contain as much information as possible about the file, you can find a good example here: afanasy/browser/monitor.js

Some names:

CGRU - came from CG - Rules. It has two meanings: computer graphics principles and computer graphics is a cool thing.

Afanasy - came from a Greek name meaning immortal.

Rules - simple came from rules! This project tracker is based on defined rules. Mostly project structure rules, where to store sources, references, dailies, outputs. As Rules does not have its own database, it walks file-server folders structure.