Ticket #1613: samplerCheck.patch

File samplerCheck.patch, 26.6 KB (added by wraitii, 9 years ago)
  • binaries/data/mods/public/art/materials/objectcolor.xml

     
    22<material>
    33    <shader effect="model"/>
    44    <define name="USE_OBJECTCOLOR" value="1"/>
     5   
     6    <required_sampler name="baseTex"/>
    57</material>
  • binaries/data/mods/public/art/materials/player_trans_parallax.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.75"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="normTex"/>
     26
    2327</material>
  • binaries/data/mods/public/art/materials/player_trans.xml

     
    22<material>
    33    <shader effect="model"/>
    44    <define name="USE_PLAYERCOLOR" value="1"/>
     5    <required_sampler name="baseTex"/>
    56</material>
  • binaries/data/mods/public/art/materials/trans_wind_parallax_spec.xml

     
    1313    <renderquery name="sim_time"/>
    1414    <define name="USE_WIND" value="1"/>
    1515    <uniform name="windData" value="1.0 1.0"/>
     16
     17    <required_sampler name="baseTex"/>
     18    <required_sampler name="specTex"/>
     19    <required_sampler name="normTex"/>
    1620</material>
  • binaries/data/mods/public/art/materials/terrain_norm.xml

     
    44    <define name="USE_NORMAL_MAP" value="1"/>
    55   
    66    <uniform name="effectSettings" value="1.0 15.0 0.0 0.0"/>
     7    <required_sampler name="normTex"/>
    78</material>
  • binaries/data/mods/public/art/materials/trans_wind.xml

     
    44    <renderquery name="sim_time"/>
    55    <define name="USE_WIND" value="1"/>
    66    <uniform name="windData" value="1.0 1.0"/>
     7    <required_sampler name="baseTex"/>
    78</material>
  • binaries/data/mods/public/art/materials/player_trans_spec.xml

     
    1212     Third value: Parallax scale.
    1313     Fourth value: AO amount. -->
    1414    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     15   
     16    <required_sampler name="baseTex"/>
     17    <required_sampler name="specTex"/>
     18
    1519</material>
  • binaries/data/mods/public/art/materials/player_water.xml

     
    1313    <uniform name="murkiness" value="0.6"/>
    1414    <uniform name="reflectionTint" value="0.3 0.4 0.3"/>
    1515    <uniform name="reflectionTintStrength" value="0.1"/>
     16    <required_sampler name="baseTex"/>
    1617</material>
  • binaries/data/mods/public/art/materials/terrain_base.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<material>
    33    <shader effect="terrain_base"/>
     4    <required_sampler name="baseTex"/>
    45</material>
  • binaries/data/mods/public/art/materials/basic_trans.xml

     
    44    <alpha_blending/>
    55    <define name="USE_TRANSPARENT" value="1"/>
    66    <alternative material="alphatest.xml" if="CFG_FORCE_ALPHATEST"/>
     7   
     8    <required_sampler name="baseTex"/>
    79</material>
  • binaries/data/mods/public/art/materials/basic_trans_ao_spec.xml

     
    2222     Third value: Parallax scale.
    2323     Fourth value: AO amount. -->
    2424    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     25   
     26    <required_sampler name="baseTex"/>
     27    <required_sampler name="specTex"/>
     28    <required_sampler name="aoTex"/>
    2529</material>
  • binaries/data/mods/public/art/materials/basic_trans_spec.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="specTex"/>
     26    <required_sampler name="normTex"/>
     27
    2328</material>
  • binaries/data/mods/public/art/materials/objectcolor_specmap.xml

     
    66
    77    <define name="USE_SPECULAR_MAP" value="1"/>
    88    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     9   
     10    <required_sampler name="baseTex"/>
     11    <required_sampler name="specTex"/>
    912</material>
  • binaries/data/mods/public/art/materials/objectcolor_spec.xml

     
    77    <define name="USE_SPECULAR" value="1"/>
    88    <uniform name="specularPower" value="16.0"/>
    99    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     10
     11<required_sampler name="baseTex"/>
    1012</material>
  • binaries/data/mods/public/art/materials/basic_glow.xml

     
    88    <define name="USE_SPECULAR_MAP" value="1"/>
    99    <define name="USE_SELF_LIGHT" value="1"/>
    1010    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     11    <required_sampler name="baseTex"/>
     12    <required_sampler name="specTex"/>
    1113</material>
  • binaries/data/mods/public/art/materials/terrain_norm_spec.xml

     
    55    <define name="USE_SPECULAR_MAP" value="1"/>
    66   
    77    <uniform name="effectSettings" value="1.0 15.0 0.0 0.0"/>
     8    <required_sampler name="baseTex"/>
     9    <required_sampler name="normTex"/>
     10    <required_sampler name="specTex"/>
    811</material>
  • binaries/data/mods/public/art/materials/aura.xml

     
    88    <define name="USE_SELF_LIGHT" value="1"/>
    99    <uniform name="specularPower" value="100.0"/>
    1010    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     11    <required_sampler name="baseTex"/>
     12    <required_sampler name="specTex"/>
    1113</material>
  • binaries/data/mods/public/art/materials/player_trans_ao.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.6"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="aoTex"/>
     26
    2327</material>
  • binaries/data/mods/public/art/materials/basic_spec.xml

     
    55    <define name="USE_SPECULAR" value="1"/>
    66    <uniform name="specularPower" value="16.0"/>
    77    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     8   
     9    <required_sampler name="baseTex"/>
    810</material>
  • binaries/data/mods/public/art/materials/no_trans_parallax_ao.xml

     
    1818     Third value: Parallax scale.
    1919     Fourth value: AO amount. -->
    2020    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     21    <required_sampler name="baseTex"/>
     22    <required_sampler name="normTex"/>
     23    <required_sampler name="aoTex"/>
     24
    2125</material>
  • binaries/data/mods/public/art/materials/alphatest_ao_parallax_spec.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<material>
     3    <required_sampler name="baseTex"/>
     4
    35    <shader effect="model_transparent"/>
    46    <define name="USE_TRANSPARENT" value="1"/>
    57    <define name="USE_ALPHATEST" value="1"/>
    68   
     9    <required_sampler name="baseTex"/>
    710    <!--define name="USE_PLAYERCOLOR" value="1"/-->
    811   
    912    <!-- REQUIRES: Actor must provide a texture named "normTex", where the Alpha channel
  • binaries/data/mods/public/art/materials/waterfall.xml

     
    77   
    88    <uniform name="specularPower" value="16.0"/>
    99    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     10
     11    <required_sampler name="baseTex"/>
    1012</material>
  • binaries/data/mods/public/art/materials/rock_bump_spec_test.xml

     
    4646     Third value: Parallax scale.
    4747     Fourth value: AO amount. -->
    4848    <uniform name="effectSettings" value="5.0 50.0 0.0075 0.85"/>
     49   
     50    <required_sampler name="baseTex"/>
     51    <required_sampler name="normTex"/>
     52    <required_sampler name="specTex"/>
    4953</material>
  • binaries/data/mods/public/art/materials/playercolor_spec.xml

     
    77    <define name="USE_SPECULAR" value="1"/>
    88    <uniform name="specularPower" value="16.0"/>
    99    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     10    <required_sampler name="baseTex"/>
    1011</material>
  • binaries/data/mods/public/art/materials/blend_spec.xml

     
    99    <define name="USE_SPECULAR" value="1"/>
    1010    <uniform name="specularPower" value="16.0"/>
    1111    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     12    <required_sampler name="baseTex"/>
    1213</material>
  • binaries/data/mods/public/art/materials/basic_trans_parallax_spec.xml

     
    2222     Third value: Parallax scale.
    2323     Fourth value: AO amount. -->
    2424    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     25    <required_sampler name="baseTex"/>
     26    <required_sampler name="specTex"/>
     27    <required_sampler name="normTex"/>
    2528</material>
  • binaries/data/mods/public/art/materials/alphatest_spec.xml

     
    77    <define name="USE_SPECULAR" value="1"/>
    88    <uniform name="specularPower" value="16.0"/>
    99    <uniform name="specularColor" value="1.0 1.0 1.0"/>
     10    <required_sampler name="baseTex"/>
    1011</material>
  • binaries/data/mods/public/art/materials/material.rnc

     
    3939    element renderquery {
    4040        attribute name { text }
    4141    }*
     42    element required_sampler {
     43        attribute name { text }
     44    }*
    4245}
  • binaries/data/mods/public/art/materials/basic_trans_ao_parallax_spec.xml

     
    2222     Third value: Parallax scale.
    2323     Fourth value: AO amount. -->
    2424    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     25   
     26    <required_sampler name="baseTex"/>
     27    <required_sampler name="normTex"/>
     28    <required_sampler name="specTex"/>
     29    <required_sampler name="aoTex"/>
    2530</material>
  • binaries/data/mods/public/art/materials/terrain_grass.xml

     
    55    <!--define name="USE_SPECULAR_MAP" value="1"/-->
    66   
    77    <!--uniform name="specularPower" value="15.0"/-->
     8    <required_sampler name="baseTex"/>
    89</material>
  • binaries/data/mods/public/art/materials/material.rng

     
    8686        <attribute name="name"/>
    8787      </element>
    8888    </zeroOrMore>
     89    <zeroOrMore>
     90        <element name="required_sampler">
     91            <attribute name="name"/>
     92        </element>
     93    </zeroOrMore>
    8994  </interleave>
    9095</element>
  • binaries/data/mods/public/art/materials/basic_trans_ao.xml

     
    2222     Third value: Parallax scale.
    2323     Fourth value: AO amount. -->
    2424    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     25   
     26    <required_sampler name="baseTex"/>
     27    <required_sampler name="aoTex"/>
    2528</material>
  • binaries/data/mods/public/art/materials/terrain_triplanar_norm_spec.xml

     
    66    <define name="USE_TRIPLANAR" value="1"/>
    77   
    88    <uniform name="effectSettings" value="1.0 15.0 0.0 0.0"/>
     9    <required_sampler name="baseTex"/>
     10    <required_sampler name="normTex"/>
     11    <required_sampler name="specTex"/>
    912</material>
  • binaries/data/mods/public/art/materials/basic_trans_wind.xml

     
    66    <renderquery name="sim_time"/>
    77    <define name="USE_WIND" value="1"/>
    88    <uniform name="windData" value="1.0 1.0"/>
     9    <required_sampler name="baseTex"/>
    910</material>
  • binaries/data/mods/public/art/materials/no_trans_ao.xml

     
    1919     Third value: Parallax scale.
    2020     Fourth value: AO amount. -->
    2121    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     22   
     23    <required_sampler name="baseTex"/>
     24    <required_sampler name="aoTex"/>
    2225</material>
  • binaries/data/mods/public/art/materials/alphatest.xml

     
    33    <shader effect="model_transparent"/>
    44    <define name="USE_TRANSPARENT" value="1"/>
    55    <define name="USE_ALPHATEST" value="1"/>
     6    <required_sampler name="baseTex"/>
     7
    68</material>
  • binaries/data/mods/public/art/materials/basic_specmap.xml

     
    1818     Third value: Parallax scale.
    1919     Fourth value: AO amount. -->
    2020    <uniform name="effectSettings" value="1.0 25.0 0.0075 0.85"/>
     21   
     22    <required_sampler name="baseTex"/>
     23    <required_sampler name="specTex"/>
    2124</material>
  • binaries/data/mods/public/art/materials/terrain_triplanar.xml

     
    44    <define name="USE_TRIPLANAR" value="1"/>
    55   
    66    <uniform name="effectSettings" value="1.0 15.0 0.0 0.0"/>
     7    <required_sampler name="baseTex"/>
    78</material>
  • binaries/data/mods/public/art/materials/player_trans_parallax_spec.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="specTex"/>
     26    <required_sampler name="normTex"/>
     27
    2328</material>
  • binaries/data/mods/public/art/materials/rock_bump_spec_ao_test.xml

     
    4747     Third value: Parallax scale.
    4848     Fourth value: AO amount. -->
    4949    <uniform name="effectSettings" value="1.0 10.0 0.0075 0.85"/>
     50   
     51    <required_sampler name="baseTex"/>
     52    <required_sampler name="specTex"/>
     53    <required_sampler name="normTex"/>
     54    <required_sampler name="aoTex"/>
     55
    5056</material>
  • binaries/data/mods/public/art/materials/player_trans_ao_parallax_spec.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.6"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="normTex"/>
     26    <required_sampler name="specTex"/>
     27    <required_sampler name="aoTex"/>
    2328</material>
  • binaries/data/mods/public/art/materials/player_trans_ao_spec.xml

     
    2020     Third value: Parallax scale.
    2121     Fourth value: AO amount. -->
    2222    <uniform name="effectSettings" value="1.0 50.0 0.0075 0.85"/>
     23   
     24    <required_sampler name="baseTex"/>
     25    <required_sampler name="specTex"/>
     26    <required_sampler name="normTex"/>
     27    <required_sampler name="aoTex"/>
     28
    2329</material>
  • binaries/data/mods/public/art/materials/player_trans_spec_helmet.xml

     
    1212     Third value: Parallax scale.
    1313     Fourth value: AO amount. -->
    1414    <uniform name="effectSettings" value="1.0 20.0 0.0075 0.85"/>
     15   
     16    <required_sampler name="baseTex"/>
     17    <required_sampler name="specTex"/>
     18
    1519</material>
  • binaries/data/mods/public/art/materials/default.xml

     
    11<?xml version="1.0" encoding="utf-8"?>
    22<material>
    33    <shader effect="model"/>
     4    <required_sampler name="baseTex"/>
    45</material>
  • source/graphics/Material.h

     
    7474    void AddRenderQuery(const char* key);
    7575    const CShaderRenderQueries& GetRenderQueries() const { return m_RenderQueries; }
    7676
     77    void AddRequiredSampler(const CStr& samplerName);
     78    const std::vector<CStrIntern>& GetRequiredSampler() const { return m_RequiredSamplers; }
     79
    7780    // Must be called after all AddShaderDefine and AddConditionalDefine
    7881    void RecomputeCombinedShaderDefines();
    7982
     
    8487    CTexturePtr m_DiffuseTexture;
    8588   
    8689    SamplersVector m_Samplers;
     90    std::vector<CStrIntern> m_RequiredSamplers;
    8791   
    8892    CStrIntern m_ShaderEffect;
    8993    CShaderDefines m_ShaderDefines;
  • source/graphics/ObjectEntry.cpp

     
    136136        LOGERROR("Actor '%s' has no textures.", utf8_from_wstring(m_Base->m_ShortName));
    137137    }
    138138   
     139    const std::vector<CStrIntern> requiredSamplers = model->GetMaterial().GetRequiredSampler();
     140   
    139141    std::vector<CObjectBase::Samp>::iterator samp;
    140142    for (samp = m_Samplers.begin(); samp != m_Samplers.end(); ++samp)
    141143    {
     144        CStrIntern string(samp->m_SamplerName);
     145        if (std::find(requiredSamplers.begin(), requiredSamplers.end(), string) == requiredSamplers.end())
     146        {
     147            LOGERROR("Object %s: sampler %s is not required by %s", m_ModelName.string8().c_str(), samp->m_SamplerName.c_str(), m_Base->m_Material.string8().c_str());
     148        }
    142149        CTextureProperties textureProps(samp->m_SamplerFile);
    143150        textureProps.SetWrap(GL_CLAMP_TO_EDGE);
    144151        CTexturePtr texture = g_Renderer.GetTextureManager().CreateTexture(textureProps);
     
    149156        model->GetMaterial().AddSampler(CMaterial::TextureSampler(samp->m_SamplerName, texture));
    150157    }
    151158
     159    for (auto it : requiredSamplers)
     160    {
     161        bool found = false;
     162        for (auto sampit : m_Samplers)
     163        {
     164            CStrIntern string(sampit.m_SamplerName);
     165            if (string == it)
     166            {
     167                found = true;
     168                break;
     169            }
     170        }
     171        if (!found)
     172        {
     173            LOGERROR("Object %s: required sampler %s not found (material %s)", m_ModelName.string8().c_str(), it.string().c_str(), m_Base->m_Material.string8().c_str());
     174        }
     175    }
     176   
    152177    // calculate initial object space bounds, based on vertex positions
    153178    model->CalcStaticObjectBounds();
    154179
  • source/graphics/MaterialManager.cpp

     
    5858    EL(shader);
    5959    EL(uniform);
    6060    EL(renderquery);
     61    EL(required_sampler);
    6162    EL(conditional_define);
    6263    AT(effect);
    6364    AT(if);
     
    180181        {
    181182            material.AddRenderQuery(attrs.GetNamedItem(at_name).c_str());
    182183        }
     184        else if (token == el_required_sampler)
     185        {
     186            material.AddRequiredSampler(attrs.GetNamedItem(at_name));
    183187    }
     188    }
    184189
    185190    material.RecomputeCombinedShaderDefines();
    186191
  • source/graphics/Material.cpp

     
    6060    m_RenderQueries.Add(key);
    6161}
    6262
     63void CMaterial::AddRequiredSampler(const CStr& samplerName)
     64{
     65    CStrIntern string(samplerName);
     66    m_RequiredSamplers.push_back(string);
     67}
     68
     69
    6370// Set up m_CombinedShaderDefines so that index i contains m_ShaderDefines, plus
    6471// the extra defines from m_ConditionalDefines[j] for all j where bit j is set in i.
    6572// This lets GetShaderDefines() cheaply return the defines for any combination of conditions.