X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Freflect.cpp;h=91e8fa55dde940020c5255e97e48eb69abbf7afb;hb=59347f76bc985e8c9c769d4a3eee672cba9c920b;hp=c2a913f982acfcb61c6ca7a0289f3233f3d434e9;hpb=523491787b2b0321748a53f139c1a4355d2f9e85;p=libs%2Fgl.git diff --git a/source/glsl/reflect.cpp b/source/glsl/reflect.cpp index c2a913f9..91e8fa55 100644 --- a/source/glsl/reflect.cpp +++ b/source/glsl/reflect.cpp @@ -33,6 +33,8 @@ bool can_convert(const BasicTypeDeclaration &from, const BasicTypeDeclaration &t return from.size<=to.size; else if(from.kind!=to.kind) return false; + else if(from.kind==BasicTypeDeclaration::INT && from.sign!=to.sign) + return from.sign && from.size<=to.size; else if(is_vector_or_matrix(from) && from.size==to.size) { BasicTypeDeclaration *from_base = dynamic_cast(from.base_type); @@ -123,7 +125,7 @@ void TypeComparer::visit(BasicTypeDeclaration &basic) { if(BasicTypeDeclaration *basic1 = multi_visit(basic)) { - if(basic1->kind!=basic.kind || basic1->size!=basic.size) + if(basic1->kind!=basic.kind || basic1->size!=basic.size || basic1->sign!=basic.sign) r_result = false; else if(basic1->base_type && basic.base_type) compare(*basic1->base_type, *basic.base_type); @@ -319,7 +321,8 @@ void DependencyCollector::visit(FunctionCall &call) if(call.declaration) { dependencies.insert(call.declaration); - call.declaration->visit(*this); + if(call.declaration->definition) + call.declaration->definition->visit(*this); } TraversingVisitor::visit(call); }