diff --git a/rsScriptC_LibGL.cpp b/rsScriptC_LibGL.cpp
index 63fb53e..279ddb2 100644
--- a/rsScriptC_LibGL.cpp
+++ b/rsScriptC_LibGL.cpp
@@ -46,73 +46,73 @@
 // Context
 //////////////////////////////////////////////////////////////////////////////
 
-void rsrBindTexture(Context *rsc, Script *sc, ProgramFragment *pf, uint32_t slot, Allocation *a) {
+void rsrBindTexture(Context *rsc, ProgramFragment *pf, uint32_t slot, Allocation *a) {
     CHECK_OBJ_OR_NULL(a);
     CHECK_OBJ(pf);
     pf->bindTexture(rsc, slot, a);
 }
 
-void rsrBindConstant(Context *rsc, Script *sc, ProgramFragment *pf, uint32_t slot, Allocation *a) {
+void rsrBindConstant(Context *rsc, ProgramFragment *pf, uint32_t slot, Allocation *a) {
     CHECK_OBJ_OR_NULL(a);
     CHECK_OBJ(pf);
     pf->bindAllocation(rsc, a, slot);
 }
 
-void rsrBindConstant(Context *rsc, Script *sc, ProgramVertex *pv, uint32_t slot, Allocation *a) {
+void rsrBindConstant(Context *rsc, ProgramVertex *pv, uint32_t slot, Allocation *a) {
     CHECK_OBJ_OR_NULL(a);
     CHECK_OBJ(pv);
     pv->bindAllocation(rsc, a, slot);
 }
 
-void rsrBindSampler(Context *rsc, Script *sc, ProgramFragment *pf, uint32_t slot, Sampler *s) {
+void rsrBindSampler(Context *rsc, ProgramFragment *pf, uint32_t slot, Sampler *s) {
     CHECK_OBJ_OR_NULL(vs);
     CHECK_OBJ(vpf);
     pf->bindSampler(rsc, slot, s);
 }
 
-void rsrBindProgramStore(Context *rsc, Script *sc, ProgramStore *ps) {
+void rsrBindProgramStore(Context *rsc, ProgramStore *ps) {
     CHECK_OBJ_OR_NULL(ps);
     rsc->setProgramStore(ps);
 }
 
-void rsrBindProgramFragment(Context *rsc, Script *sc, ProgramFragment *pf) {
+void rsrBindProgramFragment(Context *rsc, ProgramFragment *pf) {
     CHECK_OBJ_OR_NULL(pf);
     rsc->setProgramFragment(pf);
 }
 
-void rsrBindProgramVertex(Context *rsc, Script *sc, ProgramVertex *pv) {
+void rsrBindProgramVertex(Context *rsc, ProgramVertex *pv) {
     CHECK_OBJ_OR_NULL(pv);
     rsc->setProgramVertex(pv);
 }
 
-void rsrBindProgramRaster(Context *rsc, Script *sc, ProgramRaster *pr) {
+void rsrBindProgramRaster(Context *rsc, ProgramRaster *pr) {
     CHECK_OBJ_OR_NULL(pr);
     rsc->setProgramRaster(pr);
 }
 
-void rsrBindFrameBufferObjectColorTarget(Context *rsc, Script *sc, Allocation *a, uint32_t slot) {
+void rsrBindFrameBufferObjectColorTarget(Context *rsc, Allocation *a, uint32_t slot) {
     CHECK_OBJ(va);
     rsc->mFBOCache.bindColorTarget(rsc, a, slot);
     rsc->mStateVertex.updateSize(rsc);
 }
 
-void rsrBindFrameBufferObjectDepthTarget(Context *rsc, Script *sc, Allocation *a) {
+void rsrBindFrameBufferObjectDepthTarget(Context *rsc, Allocation *a) {
     CHECK_OBJ(va);
     rsc->mFBOCache.bindDepthTarget(rsc, a);
     rsc->mStateVertex.updateSize(rsc);
 }
 
-void rsrClearFrameBufferObjectColorTarget(Context *rsc, Script *sc, uint32_t slot) {
+void rsrClearFrameBufferObjectColorTarget(Context *rsc, uint32_t slot) {
     rsc->mFBOCache.bindColorTarget(rsc, NULL, slot);
     rsc->mStateVertex.updateSize(rsc);
 }
 
-void rsrClearFrameBufferObjectDepthTarget(Context *rsc, Script *sc) {
+void rsrClearFrameBufferObjectDepthTarget(Context *rsc) {
     rsc->mFBOCache.bindDepthTarget(rsc, NULL);
     rsc->mStateVertex.updateSize(rsc);
 }
 
-void rsrClearFrameBufferObjectTargets(Context *rsc, Script *sc) {
+void rsrClearFrameBufferObjectTargets(Context *rsc) {
     rsc->mFBOCache.resetAll(rsc);
     rsc->mStateVertex.updateSize(rsc);
 }
@@ -121,25 +121,25 @@
 // VP
 //////////////////////////////////////////////////////////////////////////////
 
-void rsrVpLoadProjectionMatrix(Context *rsc, Script *sc, const rsc_Matrix *m) {
+void rsrVpLoadProjectionMatrix(Context *rsc, const rsc_Matrix *m) {
     rsc->getProgramVertex()->setProjectionMatrix(rsc, m);
 }
 
-void rsrVpLoadModelMatrix(Context *rsc, Script *sc, const rsc_Matrix *m) {
+void rsrVpLoadModelMatrix(Context *rsc, const rsc_Matrix *m) {
     rsc->getProgramVertex()->setModelviewMatrix(rsc, m);
 }
 
-void rsrVpLoadTextureMatrix(Context *rsc, Script *sc, const rsc_Matrix *m) {
+void rsrVpLoadTextureMatrix(Context *rsc, const rsc_Matrix *m) {
     rsc->getProgramVertex()->setTextureMatrix(rsc, m);
 }
 
-void rsrPfConstantColor(Context *rsc, Script *sc, ProgramFragment *pf,
+void rsrPfConstantColor(Context *rsc, ProgramFragment *pf,
                         float r, float g, float b, float a) {
     CHECK_OBJ(pf);
     pf->setConstantColor(rsc, r, g, b, a);
 }
 
-void rsrVpGetProjectionMatrix(Context *rsc, Script *sc, rsc_Matrix *m) {
+void rsrVpGetProjectionMatrix(Context *rsc, rsc_Matrix *m) {
     rsc->getProgramVertex()->getProjectionMatrix(rsc, m);
 }
 
@@ -148,7 +148,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 
-void rsrDrawPath(Context *rsc, Script *sc, Path *sm) {
+void rsrDrawPath(Context *rsc, Path *sm) {
     CHECK_OBJ(sm);
     if (!rsc->setupCheck()) {
         return;
@@ -156,7 +156,7 @@
     sm->render(rsc);
 }
 
-void rsrDrawMesh(Context *rsc, Script *sc, Mesh *sm) {
+void rsrDrawMesh(Context *rsc, Mesh *sm) {
     CHECK_OBJ(sm);
     if (!rsc->setupCheck()) {
         return;
@@ -164,7 +164,7 @@
     sm->render(rsc);
 }
 
-void rsrDrawMeshPrimitive(Context *rsc, Script *sc, Mesh *sm, uint32_t primIndex) {
+void rsrDrawMeshPrimitive(Context *rsc, Mesh *sm, uint32_t primIndex) {
     CHECK_OBJ(sm);
     if (!rsc->setupCheck()) {
         return;
@@ -172,7 +172,7 @@
     sm->renderPrimitive(rsc, primIndex);
 }
 
-void rsrDrawMeshPrimitiveRange(Context *rsc, Script *sc, Mesh *sm, uint32_t primIndex,
+void rsrDrawMeshPrimitiveRange(Context *rsc, Mesh *sm, uint32_t primIndex,
                                uint32_t start, uint32_t len) {
     CHECK_OBJ(sm);
     if (!rsc->setupCheck()) {
@@ -181,7 +181,7 @@
     sm->renderPrimitiveRange(rsc, primIndex, start, len);
 }
 
-void rsrMeshComputeBoundingBox(Context *rsc, Script *sc, Mesh *sm,
+void rsrMeshComputeBoundingBox(Context *rsc, Mesh *sm,
                                float *minX, float *minY, float *minZ,
                                float *maxX, float *maxY, float *maxZ) {
     CHECK_OBJ(sm);
@@ -200,32 +200,32 @@
 //////////////////////////////////////////////////////////////////////////////
 
 
-void rsrColor(Context *rsc, Script *sc, float r, float g, float b, float a) {
+void rsrColor(Context *rsc, float r, float g, float b, float a) {
     ProgramFragment *pf = rsc->getProgramFragment();
     pf->setConstantColor(rsc, r, g, b, a);
 }
 
-void rsrPrepareClear(Context *rsc, Script *sc) {
+void rsrPrepareClear(Context *rsc) {
     rsc->mFBOCache.setup(rsc);
     rsc->setupProgramStore();
 }
 
-uint32_t rsrGetWidth(Context *rsc, Script *sc) {
+uint32_t rsrGetWidth(Context *rsc) {
     return rsc->getWidth();
 }
 
-uint32_t rsrGetHeight(Context *rsc, Script *sc) {
+uint32_t rsrGetHeight(Context *rsc) {
     return rsc->getHeight();
 }
 
-void rsrDrawTextAlloc(Context *rsc, Script *sc, Allocation *a, int x, int y) {
+void rsrDrawTextAlloc(Context *rsc, Allocation *a, int x, int y) {
     const char *text = (const char *)rsc->mHal.funcs.allocation.lock1D(rsc, a);
     size_t allocSize = a->getType()->getSizeBytes();
     rsc->mStateFont.renderText(text, allocSize, x, y);
     rsc->mHal.funcs.allocation.unlock1D(rsc, a);
 }
 
-void rsrDrawText(Context *rsc, Script *sc, const char *text, int x, int y) {
+void rsrDrawText(Context *rsc, const char *text, int x, int y) {
     size_t textLen = strlen(text);
     rsc->mStateFont.renderText(text, textLen, x, y);
 }
@@ -246,7 +246,7 @@
     }
 }
 
-void rsrMeasureTextAlloc(Context *rsc, Script *sc, Allocation *a,
+void rsrMeasureTextAlloc(Context *rsc, Allocation *a,
                          int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
     CHECK_OBJ(a);
     const char *text = (const char *)rsc->mHal.funcs.allocation.lock1D(rsc, a);
@@ -257,7 +257,7 @@
     rsc->mHal.funcs.allocation.unlock1D(rsc, a);
 }
 
-void rsrMeasureText(Context *rsc, Script *sc, const char *text,
+void rsrMeasureText(Context *rsc, const char *text,
                     int32_t *left, int32_t *right, int32_t *top, int32_t *bottom) {
     size_t textLen = strlen(text);
     Font::Rect metrics;
@@ -265,12 +265,12 @@
     SetMetrics(&metrics, left, right, top, bottom);
 }
 
-void rsrBindFont(Context *rsc, Script *sc, Font *font) {
+void rsrBindFont(Context *rsc, Font *font) {
     CHECK_OBJ(font);
     rsi_ContextBindFont(rsc, font);
 }
 
-void rsrFontColor(Context *rsc, Script *sc, float r, float g, float b, float a) {
+void rsrFontColor(Context *rsc, float r, float g, float b, float a) {
     rsc->mStateFont.setFontColor(r, g, b, a);
 }
 
