From 5f206a151584d42c3063845171585e3adec94723 Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 29 Apr 2009 18:23:56 +0000 Subject: [PATCH] Clip planes --- panda/src/gobj/shader.cxx | 22 ++++++++++++++++++++++ panda/src/gobj/shader.h | 1 + 2 files changed, 23 insertions(+) diff --git a/panda/src/gobj/shader.cxx b/panda/src/gobj/shader.cxx index 8a97b36f2c..cba06a52f6 100755 --- a/panda/src/gobj/shader.cxx +++ b/panda/src/gobj/shader.cxx @@ -353,6 +353,7 @@ cp_dependency(ShaderMatInput inp) { (inp == SMO_plight_x)|| (inp == SMO_slight_x)|| (inp == SMO_satten_x)|| + (inp == SMO_clipplane_x)|| (inp == SMO_mat_constant_x)|| (inp == SMO_vec_constant_x)|| (inp == SMO_view_x_to_view)|| @@ -794,6 +795,27 @@ compile_parameter(const ShaderArgId &arg_id, _mat_spec.push_back(bind); return true; } + + if (pieces[0] == "clipplane") { + if ((!cp_errchk_parameter_words(p,2))|| + (!cp_errchk_parameter_in(p)) || + (!cp_errchk_parameter_uniform(p))|| + (!cp_errchk_parameter_float(p,4,4))) { + return false; + } + ShaderMatSpec bind; + bind._id = arg_id; + bind._piece = SMP_row3; + bind._func = SMF_first; + bind._part[0] = SMO_clipplane_x; + bind._arg[0] = InternalName::make(pieces[1]); + bind._part[1] = SMO_identity; + bind._arg[1] = NULL; + + cp_optimize_mat_spec(bind); + _mat_spec.push_back(bind); + return true; + } // Keywords to access unusual parameters. diff --git a/panda/src/gobj/shader.h b/panda/src/gobj/shader.h index 25e91a7840..b683512ecc 100755 --- a/panda/src/gobj/shader.h +++ b/panda/src/gobj/shader.h @@ -79,6 +79,7 @@ public: SMO_slight_x, SMO_satten_x, SMO_plane_x, + SMO_clipplane_x, SMO_mat_constant_x, SMO_vec_constant_x,