void GrGLSLVaryingHandler::addPassThroughAttribute(const GrGeometryProcessor::Attribute* input, const char* output, GrSLPrecision precision) { GrSLType type = GrVertexAttribTypeToSLType(input->fType); GrGLSLVertToFrag v(type); this->addVarying(input->fName, &v, precision); this->writePassThroughAttribute(input, output, v); }
void GrGLProgramBuilder::addPassThroughAttribute(const GrPrimitiveProcessor::Attribute* input, const char* output) { GrSLType type = GrVertexAttribTypeToSLType(input->fType); GrGLVertToFrag v(type); this->addVarying(input->fName, &v); fVS.codeAppendf("%s = %s;", v.vsOut(), input->fName); fFS.codeAppendf("%s = %s;", output, v.fsIn()); }
void GrGLSLVaryingHandler::emitAttributes(const GrGeometryProcessor& gp) { int vaCount = gp.numAttribs(); for (int i = 0; i < vaCount; i++) { const GrGeometryProcessor::Attribute& attr = gp.getAttrib(i); this->addAttribute(GrShaderVar(attr.fName, GrVertexAttribTypeToSLType(attr.fType), GrShaderVar::kAttribute_TypeModifier, GrShaderVar::kNonArray, attr.fPrecision)); } }
void GrGLSLVaryingHandler::addPassThroughAttribute(const GrGeometryProcessor::Attribute* input, const char* output) { GrSLType type = GrVertexAttribTypeToSLType(input->fType); GrGLSLVertToFrag v(type); this->addVarying(input->fName, &v); fProgramBuilder->fVS.codeAppendf("%s = %s;", v.vsOut(), input->fName); if (fProgramBuilder->primitiveProcessor().willUseGeoShader()) { fProgramBuilder->fGS.codeAppendf("%s = %s[0];", v.gsOut(), v.gsIn()); } fProgramBuilder->fFS.codeAppendf("%s = %s;", output, v.fsIn()); }