X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fcompatibility.cpp;h=f12a46e384cf6c451b05125048ba89ffd38fe733;hb=73bef37da97b6da0b99227f63235cb52c4e56c44;hp=a3b2882dc538b0db82d603c12f792c3846ca36b5;hpb=a93a69e53263005709fa172845b01f81cd1c074c;p=libs%2Fgl.git diff --git a/source/glsl/compatibility.cpp b/source/glsl/compatibility.cpp index a3b2882d..f12a46e3 100644 --- a/source/glsl/compatibility.cpp +++ b/source/glsl/compatibility.cpp @@ -14,9 +14,16 @@ namespace GL { namespace SL { DefaultPrecisionGenerator::DefaultPrecisionGenerator(): + stage_type(Stage::SHARED), toplevel(true) { } +void DefaultPrecisionGenerator::apply(Stage &stage) +{ + SetForScope set_stage(stage_type, stage.type); + visit(stage.content); +} + void DefaultPrecisionGenerator::visit(Block &block) { if(toplevel) @@ -25,7 +32,7 @@ void DefaultPrecisionGenerator::visit(Block &block) BlockModifier::visit(block); } else - StageVisitor::visit(block); + TraversingVisitor::visit(block); } void DefaultPrecisionGenerator::visit(Precision &prec) @@ -49,7 +56,7 @@ void DefaultPrecisionGenerator::visit(VariableDeclaration &var) Precision *prec = new Precision; if(!type.compare(0, 7, "sampler")) prec->precision = "lowp"; - else if(stage->type==Stage::FRAGMENT) + else if(stage_type==Stage::FRAGMENT) prec->precision = "mediump"; else prec->precision = "highp"; @@ -78,11 +85,11 @@ LegacyConverter::LegacyConverter(): frag_out(0) { } -LegacyConverter::LegacyConverter(const Version &v): - target_api(get_gl_api()), - target_version(v), - frag_out(0) -{ } +void LegacyConverter::apply(Stage &s) +{ + SetForScope set_stage(stage, &s); + visit(s.content); +} bool LegacyConverter::check_version(const Version &feature_version) const {