亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? semantic.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************\
Copyright (c) 2002, NVIDIA Corporation.

NVIDIA Corporation("NVIDIA") supplies this software to you in
consideration of your agreement to the following terms, and your use,
installation, modification or redistribution of this NVIDIA software
constitutes acceptance of these terms.  If you do not agree with these
terms, please do not use, install, modify or redistribute this NVIDIA
software.

In consideration of your agreement to abide by the following terms, and
subject to these terms, NVIDIA grants you a personal, non-exclusive
license, under NVIDIA's copyrights in this original NVIDIA software (the
"NVIDIA Software"), to use, reproduce, modify and redistribute the
NVIDIA Software, with or without modifications, in source and/or binary
forms; provided that if you redistribute the NVIDIA Software, you must
retain the copyright notice of NVIDIA, this notice and the following
text and disclaimers in all such redistributions of the NVIDIA Software.
Neither the name, trademarks, service marks nor logos of NVIDIA
Corporation may be used to endorse or promote products derived from the
NVIDIA Software without specific prior written permission from NVIDIA.
Except as expressly stated in this notice, no other rights or licenses
express or implied, are granted by NVIDIA herein, including but not
limited to any patent rights that may be infringed by your derivative
works or by other works in which the NVIDIA Software may be
incorporated. No hardware is licensed hereunder. 

THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
PRODUCTS.

IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
// semantic.c
//

#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "slglobals.h"

/*
 * GetVectorConst()
 *
 */

static void GetVectorConst(float *fVal, expr *fExpr)
{
    int Oops = 0;
    constant *pconst;
    binary *pbin;
    unary *pun;
    int ii;

    for (ii = 0; ii < 4; ii++)
        fVal[ii] = 0.0f;
    if (fExpr) {
        switch (fExpr->common.kind) {
        case UNARY_N:
            pun = (unary *) fExpr;
            switch (pun->op) {
            //case FCONST_V_OP:
            //    for (ii = 0; ii < SUBOP_GET_S1(pun->subop); ii++)
            //        fVal[ii] = 1.1f;
            //    break;
            case VECTOR_V_OP:
                Oops = 2;
                break;
            default:
                Oops = 1;
                break;
            }
            break;
        case BINARY_N:
            pbin = (binary *) fExpr;
            switch (pbin->op) {
            case EXPR_LIST_OP:
                if (pbin->right == NULL &&
                    pbin->left->common.kind == CONST_N)
                {
                    pconst = (constant *) pbin->left;
                    switch (pconst->op) {
                    case FCONST_V_OP:
                    case HCONST_V_OP:
                    case XCONST_V_OP:
                        for (ii = 0; ii < SUBOP_GET_S1(pconst->subop); ii++)
                            fVal[ii] = pconst->val[ii].f;
                        break;
                    case ICONST_V_OP:
                    case BCONST_V_OP:
                        for (ii = 0; ii < SUBOP_GET_S1(pconst->subop); ii++)
                            fVal[ii] = (float) pconst->val[ii].i;
                        break;
                    case FCONST_OP:
                    case HCONST_OP:
                    case XCONST_OP:
                        fVal[0] = pconst->val[0].f;
                        break;
                    case ICONST_OP:
                    case BCONST_OP:
                        fVal[0] = (float) pconst->val[0].i;
                        break;
                    default:
                        Oops = 4;
                        break;
                    }
                } else {
                    Oops = 3;
                }
                break;
            default:
                Oops = 1;
                break;
            }
            break;
        default:
            Oops = 1;
            break;
        }
    }
    if (Oops)
        SemanticWarning(Cg->tokenLoc, 9999, "*** GetVectorConst() not finished ***");
} // GetVectorConst

/*
 * lNewUniformSemantic() - Add an entry to the uniform semantic table.
 *
 */
static void lNewUniformSemantic(int gname, Symbol *fSymb, int semantics)
{
    UniformSemantic *lUniform, *nUniform;

    lUniform = NewUniformSemantic(gname, fSymb->name, semantics);
    nUniform = Cg->theHAL->uniforms;
    if (nUniform) {
        while (nUniform->next)
            nUniform = nUniform->next;
        nUniform->next = lUniform;
    } else {
        Cg->theHAL->uniforms = lUniform;
    }
} // lNewUniformSemantic

/*
 * lBindUniformVariable() - Bind a uniform variable to $uniform connector.  Record semantics
 *         value if present.
 */

static int lBindUniformVariable(Symbol *fSymb, int gname, int IsParameter)
{
    int category, domain, qualifiers, OK;
    BindingTree *ltree;
    Binding *lBind;
    SymbolList **lList, *mList, *nList;

    OK = 0;
    category = GetCategory(fSymb->type);
    domain = GetDomain(fSymb->type);
    qualifiers = GetQualifiers(fSymb->type);
    switch (category) {
    case TYPE_CATEGORY_SCALAR:
    case TYPE_CATEGORY_ARRAY:
    case TYPE_CATEGORY_STRUCT:
        lNewUniformSemantic(gname, fSymb, fSymb->details.var.semantics);
        if (IsParameter) {
            lList = &Cg->theHAL->uniformParam;
        } else {
            lList = &Cg->theHAL->uniformGlobal;
        }
        lBind = /* theHAL-> */ NewBinding(gname, fSymb->name);
        lBind->none.properties = BIND_INPUT | BIND_UNIFORM;
        ltree = LookupBinding(gname, fSymb->name);
        if (ltree) {
            if (Cg->theHAL->BindUniformPragma(&fSymb->loc, fSymb, lBind, &ltree->binding)) {
                if (!(lBind->none.properties & BIND_UNIFORM)) {
                    SemanticError(&fSymb->loc, ERROR_S_NON_UNIF_BIND_TO_UNIF_VAR,
                                  GetAtomString(atable, fSymb->name));
                    lList = NULL;
                }
            } else {
                SemanticError(&fSymb->loc, ERROR_S_INCOMPATIBLE_BIND_DIRECTIVE,
                              GetAtomString(atable, fSymb->name));
                lList = NULL;
            }
        }
        if (lList && !(lBind->none.properties & BIND_HIDDEN)) {
            OK = 1;
            fSymb->details.var.bind = lBind;
            nList = (SymbolList*) malloc(sizeof(SymbolList));
            nList->next = NULL;
            nList->symb = fSymb;
            if (*lList) {
                mList = *lList;
                while (mList->next != NULL)
                    mList = mList->next;
                mList->next = nList;
            } else {
                *lList = nList;
            }
        }
        break;
    default:
        SemanticError(&fSymb->loc, ERROR_S_ILLEGAL_TYPE_UNIFORM_VAR,
                      GetAtomString(atable, fSymb->name));
        break;
    }
    return OK;
} // lBindUniformVariable

/*
 * lBindVaryingVariable() - Bind a variable to $vin, $vout, or $uniform connector.
 *
 */

static Symbol *lBindVaryingVariable(Symbol *fSymb, int gname, int IsOutVal, int IsStructMember,
                                    int structSemantics)
{
    int category, domain, qualifiers;
    Symbol *lSymb, *mSymb;
    BindingTree *ltree;
    Binding *lBind;
    Scope *lScope;
    int lname;

    lSymb = NULL;
    category = GetCategory(fSymb->type);
    domain = GetDomain(fSymb->type);
    qualifiers = GetQualifiers(fSymb->type);
    switch (category) {
    case TYPE_CATEGORY_SCALAR:
    case TYPE_CATEGORY_ARRAY:
        lScope = NULL;
        lname = 0;
        lBind = /* theHAL-> */ NewBinding(gname, fSymb->name);
        ltree = LookupBinding(gname, fSymb->name);
        if (fSymb->details.var.semantics) {
            if (ltree) {
                SemanticWarning(&fSymb->loc, WARNING_S_SEMANTICS_AND_BINDING,
                                GetAtomString(atable, fSymb->name));
            }
            lname = fSymb->details.var.semantics;
            if (Cg->theHAL->BindVaryingSemantic(&fSymb->loc, fSymb, lname, lBind, IsOutVal)) {
                if (lBind->none.properties & BIND_INPUT) {
                    if (IsOutVal) {
                        SemanticError(&fSymb->loc, ERROR_S_OUT_QUALIFIER_IN_SEMANTIC,
                                      GetAtomString(atable, fSymb->name));
                    }
                    lScope = Cg->theHAL->varyingIn->type->str.members;
                } else {
                    if (!IsOutVal) {
                        SemanticError(&fSymb->loc, ERROR_S_IN_QUALIFIER_OUT_SEMANTIC,
                                      GetAtomString(atable, fSymb->name));
                    }
                    lScope = Cg->theHAL->varyingOut->type->str.members;
                }
            } else {
                SemanticError(&fSymb->loc, ERROR_S_UNKNOWN_SEMANTICS,
                              GetAtomString(atable, fSymb->name));
            }
        } else {
            // If no semantics, check for #pragma bind directive.
            lname = fSymb->name;
            if (ltree) {
                if (Cg->theHAL->BindVaryingPragma(&fSymb->loc, fSymb, lBind, &ltree->binding, IsOutVal)) {
                    if (lBind->none.properties & BIND_UNIFORM) {
                        SemanticError(&fSymb->loc, ERROR_S_UNIF_BIND_TO_NON_UNIF_VAR,
                                      GetAtomString(atable, fSymb->name));
                    } else {
                        if (lBind->none.properties & BIND_INPUT) {
                            lScope = Cg->theHAL->varyingIn->type->str.members;
                        } else {
                            lScope = Cg->theHAL->varyingOut->type->str.members;
                        }
                    }
                } else {
                    SemanticError(&fSymb->loc, ERROR_S_INCOMPATIBLE_BIND_DIRECTIVE,
                                  GetAtomString(atable, fSymb->name));
                }
            } else {
                // If no semantics or #pragma bind, get default binding from profile if it allows them:
                if (Cg->theHAL->BindVaryingUnbound(&fSymb->loc, fSymb, lname, structSemantics, lBind, IsOutVal)) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩高清一区| 狠狠色狠狠色综合| 欧美日韩在线播| 亚洲成av人**亚洲成av**| 欧美日韩国产电影| 九九久久精品视频| 欧美激情综合在线| 色94色欧美sute亚洲线路二| 午夜精品福利一区二区三区蜜桃| 777奇米四色成人影色区| 精品一区二区三区免费观看| 中文字幕第一区| 欧美伊人精品成人久久综合97| 日韩激情一区二区| 欧美高清在线一区| 欧美在线观看视频在线| 久久99精品久久久久久动态图 | 91精品国产综合久久国产大片| 美女久久久精品| 国产欧美一区二区三区沐欲| 91久久精品日日躁夜夜躁欧美| 香蕉成人啪国产精品视频综合网 | 国产拍揄自揄精品视频麻豆| 色女孩综合影院| 精品在线你懂的| 中文字幕制服丝袜一区二区三区| 欧美日韩电影一区| 国产一区二区久久| 亚洲国产乱码最新视频| 久久久亚洲精华液精华液精华液 | 精品福利在线导航| 色综合久久九月婷婷色综合| 精品一区二区三区免费视频| 亚洲精品乱码久久久久久| 日韩欧美美女一区二区三区| av电影天堂一区二区在线| 蜜桃免费网站一区二区三区| 亚洲三级小视频| 国产亚洲自拍一区| 91麻豆精品国产91| 欧洲精品在线观看| 国产白丝网站精品污在线入口| 天天操天天干天天综合网| 中文字幕一区二区三| 欧美精品一区二区三区一线天视频 | 亚洲午夜精品网| 国产精品久久久久久久久久久免费看 | 久久精品男人天堂av| 91.com在线观看| 92国产精品观看| 国产黄色91视频| 蜜乳av一区二区| 亚洲午夜久久久久久久久久久| 国产精品色哟哟网站| 日韩精品专区在线影院观看| 欧美群妇大交群的观看方式| 在线免费观看日本欧美| 99亚偷拍自图区亚洲| 高清不卡一区二区| 狠狠色狠狠色综合日日91app| 日韩在线播放一区二区| 一区二区在线观看免费| 亚洲欧美电影一区二区| 国产精品久久久久久久浪潮网站 | 日本精品一区二区三区高清| 成人久久18免费网站麻豆| 国产高清视频一区| 韩国视频一区二区| 黄页网站大全一区二区| 久久99九九99精品| 国产综合久久久久影院| 国产在线精品国自产拍免费| 国产一区二区视频在线播放| 极品尤物av久久免费看| 国产一区二区三区av电影| 极品少妇xxxx精品少妇| 国产乱码精品1区2区3区| 国产一区二区不卡在线| 国产精品456| 国产成人免费视频网站| 粉嫩一区二区三区性色av| 国产91对白在线观看九色| 成人app下载| 一本到不卡免费一区二区| 欧美性受xxxx黑人xyx| 欧美精品在线视频| 日韩欧美国产成人一区二区| 亚洲精品在线免费观看视频| 久久精品网站免费观看| 亚洲欧洲在线观看av| 亚洲一区中文在线| 免费观看91视频大全| 国产一区二区视频在线| av电影在线观看不卡| 欧美无乱码久久久免费午夜一区| 欧美三级欧美一级| 日韩欧美一区二区三区在线| 久久精品在线免费观看| 亚洲美女免费视频| 日韩 欧美一区二区三区| 韩国女主播一区二区三区| 成人三级伦理片| 欧美午夜一区二区三区| 日韩你懂的在线观看| 国产精品进线69影院| 一区二区三区久久| 久久99国产精品麻豆| 成人国产精品免费网站| 欧美日免费三级在线| 26uuu另类欧美亚洲曰本| 中文字幕中文乱码欧美一区二区| 亚洲电影视频在线| 国产一区二区三区在线看麻豆| 91在线免费播放| 日韩精品专区在线影院重磅| 亚洲欧美怡红院| 精品一区二区三区免费| 色婷婷av一区| 久久亚洲二区三区| 亚洲妇熟xx妇色黄| 不卡的av中国片| 日韩一区二区不卡| 玉足女爽爽91| 国产高清视频一区| 欧美一区二区在线免费观看| 中文字幕一区二区三区在线观看| 日日夜夜一区二区| 97久久精品人人做人人爽| 欧美一区二区在线视频| 亚洲男人天堂av网| 国产成人亚洲综合a∨婷婷图片| 欧美在线不卡视频| 国产精品久久久久久久岛一牛影视 | 亚洲一级二级三级| 岛国av在线一区| 精品三级在线看| 日日摸夜夜添夜夜添国产精品| av在线不卡网| 国产亚洲精品福利| 麻豆国产一区二区| 欧美裸体一区二区三区| 亚洲精品综合在线| 成人永久免费视频| 精品成人一区二区| 老司机午夜精品| 91精品国产乱| 三级在线观看一区二区| 欧美性猛片aaaaaaa做受| 亚洲欧美在线高清| av色综合久久天堂av综合| 国产午夜精品在线观看| 国产中文字幕精品| 精品久久久久香蕉网| 久久精品噜噜噜成人av农村| 欧美丰满嫩嫩电影| 日韩影院免费视频| 7777精品伊人久久久大香线蕉| 一级特黄大欧美久久久| 色丁香久综合在线久综合在线观看| 国产精品成人免费| 91原创在线视频| 中文字幕一区二区三区四区不卡| 高清不卡一区二区在线| 中文av一区特黄| 成人精品免费网站| 中文字幕电影一区| 91日韩精品一区| 亚洲美女免费视频| 欧美无人高清视频在线观看| 亚洲一区二区三区四区五区黄| 欧美性受xxxx| 日韩精品1区2区3区| 欧美成人精品二区三区99精品| 麻豆国产精品777777在线| 亚洲精品一区二区三区四区高清| 狠狠狠色丁香婷婷综合久久五月| 久久久久久久久99精品| 国产成人av电影在线| 亚洲欧洲日韩女同| 欧美日韩视频不卡| 美日韩一区二区| 国产婷婷色一区二区三区四区| 国产**成人网毛片九色 | 99v久久综合狠狠综合久久| 亚洲人午夜精品天堂一二香蕉| 91久久线看在观草草青青| 亚洲成av人片在www色猫咪| 欧美一级欧美三级在线观看| 黄色精品一二区| 亚洲青青青在线视频| 欧美三片在线视频观看| 黑人精品欧美一区二区蜜桃| 中文一区二区在线观看| 色先锋aa成人| 久久99精品国产麻豆婷婷| 国产精品夫妻自拍| 这里是久久伊人| 成人开心网精品视频| 日韩综合在线视频| 国产欧美精品一区二区色综合朱莉|