Changeset 1386


Ignore:
Timestamp:
May 14, 2012, 8:40:22 AM (9 years ago)
Author:
sam
Message:

orbital: use the new LolFx shader declaration.

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/orbital/Makefile.am

    r1366 r1386  
    55    orbital.cpp orbital.h mesh.h particlesystem.h tank.h player.h \
    66    snake.h starfield.h
     7nodist_orbital_SOURCES = \
     8    shiny.lolfx.cpp
    79orbital_CPPFLAGS = @LOL_CFLAGS@ @PIPI_CFLAGS@
    810orbital_LDADD =
     
    1618CLEANFILES = orbital.self
    1719
     20SUFFIXES = .lolfx
     21%.lolfx.cpp: %.lolfx
     22        echo "/* This file was autogenerated. DO NOT MODIFY IT. */" > $@.tmp
     23        echo "char const *lolfx_$(notdir $(^:%.lolfx=%)) =" >> $@.tmp
     24        $(SED) 's/"/\\"/g' $^ | $(SED) 's/.*/"&\\n"/' >> $@.tmp
     25        echo ";" >> $@.tmp
     26        mv $@.tmp $@
     27
  • trunk/orbital/mesh.h

    r1356 r1386  
    99 *    to do with quads.
    1010 */
     11
     12extern char const *lolfx_shiny;
    1113
    1214#include "CommandParser.h"
     
    7880    void MeshConvert()
    7981    {
    80         m_gpu.shader = Shader::Create(
    81 #if !defined __CELLOS_LV2__ && !defined _XBOX && !defined USE_D3D9
    82             "#version 120\n"
    83             "attribute vec3 in_Vertex;"
    84             "attribute vec3 in_Normal;"
    85             "attribute vec4 in_Color;"
    86             "uniform mat4 in_ModelView;"
    87             "uniform mat4 in_Proj;"
    88             "uniform mat3 in_NormalMat;"
    89             "varying vec4 pass_Color;"
    90             ""
    91             "void main(void)"
    92             "{"
    93                  /* Material properties */
    94             "    vec3 specular_reflect = vec3(0.8, 0.75, 0.4);"
    95             "    float specular_power = 60.f;"
    96 
    97                  /* World properties */
    98             "    float ambient_mul = 0.5f;"
    99             "    vec3 light_dir = normalize(vec3(0.3, 0.3, 0.7));"
    100             "    vec3 ambient_color = vec3(0.25, 0.2, 0.35);"
    101             "    vec3 diffuse_color = vec3(1.0, 1.0, 0.6);"
    102             "    vec3 specular_color = vec3(1.0, 1.0, 0.6);"
    103 
    104             "    vec3 tnorm = normalize(in_NormalMat * in_Normal);"
    105             "    vec4 eye = in_ModelView * vec4(in_Vertex, 1.0);"
    106 
    107             "    vec3 s = light_dir;" /* normalize(eye - lightpos); */
    108             "    vec3 v = normalize(-eye.xyz);"
    109             "    vec3 r = reflect(-s, tnorm);"
    110 
    111             "    vec3 ambient = ambient_color;"
    112             "    float sdotn = max(dot(s, tnorm), 0.0);"
    113             "    vec3 diffuse = diffuse_color * sdotn;"
    114             "    vec3 specular = vec3(0.0, 0.0, 0.0);"
    115             "    if (sdotn > 0.0)"
    116             "        specular = specular_color * specular_reflect"
    117             "                 * pow(max(dot(r, v), 0.0), specular_power);"
    118             "    vec3 light = ambient + diffuse + specular;"
    119 
    120             "    pass_Color = in_Color * vec4(light, 1.0);"
    121             "    gl_Position = in_Proj * eye;"
    122             "}",
    123 
    124             "#version 120\n"
    125             "varying vec4 pass_Color;"
    126             ""
    127             "void main(void) {"
    128             "    gl_FragColor = pass_Color;"
    129             "}"
    130 #else
    131             "void main(float3 in_Vertex : POSITION,"
    132             "          float3 in_Normal : NORMAL,"
    133             "          float4 in_Color : COLOR,"
    134             "          uniform float4x4 in_ModelView,"
    135             "          uniform float4x4 in_Proj,"
    136             "          uniform float3x3 in_NormalMat,"
    137             "          out float4 out_Position : POSITION,"
    138             "          out float4 pass_Color : COLOR)"
    139             "{"
    140             "    float3 specular_reflect = float3(0.8, 0.75, 0.4);"
    141             "    float specular_power = 60.f;"
    142             "    float ambient_mul = 0.5f;"
    143             "    float3 light_dir = normalize(float3(0.3, 0.3, 0.7));"
    144             "    float3 ambient_color = float3(0.25, 0.2, 0.35);"
    145             "    float3 diffuse_color = float3(1.0, 1.0, 0.6);"
    146             "    float3 specular_color = float3(1.0, 1.0, 0.6);"
    147             "    float3 tnorm = normalize(mul(in_NormalMat, in_Normal));"
    148             "    float4 eye = mul(in_ModelView, float4(in_Vertex, 1.0));"
    149             "    float3 s = light_dir;"
    150             "    float3 v = normalize(-eye.xyz);"
    151             "    float3 r = reflect(-s, tnorm);"
    152             "    float3 ambient = ambient_color;"
    153             "    float sdotn = max(dot(s, tnorm), 0.0);"
    154             "    float3 diffuse = diffuse_color * sdotn;"
    155             "    float3 specular = float3(0.0, 0.0, 0.0);"
    156             "    if (sdotn > 0.0)"
    157             "        specular = specular_color * specular_reflect"
    158             "                 * pow(max(dot(r, v), 0.0), specular_power);"
    159             "    float3 light = ambient + diffuse + specular;"
    160 #if defined _XBOX
    161             "    pass_Color = in_Color.abgr * float4(light, 1.0);"
    162 #else
    163             "    pass_Color = in_Color * float4(light, 1.0);"
    164 #endif
    165             "    out_Position = mul(in_Proj, eye);"
    166             "}",
    167 
    168             "void main(float4 pass_Color : COLOR,"
    169             "          out float4 out_FragColor : COLOR) {"
    170             "    out_FragColor = pass_Color;"
    171             "}"
    172 #endif
    173         );
     82        m_gpu.shader = Shader::Create(lolfx_shiny);
     83
    17484        m_gpu.modelview = m_gpu.shader->GetUniformLocation("in_ModelView");
    17585        m_gpu.proj = m_gpu.shader->GetUniformLocation("in_Proj");
    17686        m_gpu.normalmat = m_gpu.shader->GetUniformLocation("in_NormalMat");
     87        m_gpu.damage = m_gpu.shader->GetUniformLocation("in_Damage");
    17788        m_gpu.coord = m_gpu.shader->GetAttribLocation("in_Vertex",
    17889                                              VertexUsage::Position, 0);
     
    225136    }
    226137
    227     void Render(mat4 const &model)
     138    void Render(mat4 const &model, float damage = 0.f)
    228139    {
    229140        mat4 modelview = Scene::GetDefault()->GetViewMatrix() * model;
     
    234145        m_gpu.shader->SetUniform(m_gpu.proj, Scene::GetDefault()->GetProjMatrix());
    235146        m_gpu.shader->SetUniform(m_gpu.normalmat, normalmat);
     147        m_gpu.shader->SetUniform(m_gpu.damage, damage);
    236148        m_gpu.vdecl->SetStream(m_gpu.vbo, m_gpu.coord, m_gpu.norm, m_gpu.color);
    237149        m_gpu.vdecl->Bind();
     
    816728        Shader *shader;
    817729        ShaderAttrib coord, norm, color;
    818         ShaderUniform modelview, proj, normalmat;
     730        ShaderUniform modelview, proj, normalmat, damage;
    819731        VertexDeclaration *vdecl;
    820732        VertexBuffer *vbo;
  • trunk/win32/orbital.vcxproj

    r1380 r1386  
    4141  </ItemGroup>
    4242  <ItemGroup>
     43    <LolFxCompile Include="..\orbital\shiny.lolfx" />
     44  </ItemGroup>
     45  <ItemGroup>
    4346    <ProjectReference Include="lolcore.vcxproj">
    4447      <Project>{9e62f2fe-3408-4eae-8238-fd84238ceeda}</Project>
Note: See TracChangeset for help on using the changeset viewer.