• Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Social Media
    •   @Wings3dOfficial
    •   @Wings3dOfficial
    •   Wings3dOfficial
    •   Wings3dOfficial
  • Register
  • Login
  • Website
  • Search
  • Member List
  • Help
  • Old Forum
  • Register
  • Login
Wings 3D Development Forum Wings 3D Design & Development v
« Previous 1 … 4 5 6 7 8 … 11 Next »
A new release

 
  • 1 Vote(s) - 5 Average
A new release

rattle
Offline

Junior Member

Posts: 5
Threads: 1
Joined: Jun 2014
#45
06-22-2014, 07:07 PM (This post was last modified: 06-22-2014, 07:08 PM by rattle.)
[Image: f8MV5c.png]

hemilight.vs
Code:
// $Id$
//
// Vertex shader for hemispherical lighting
//
// Author: Randi Rost
//
// Copyright (C) 2005 3Dlabs, Inc.
//
// See 3Dlabs-License.txt for license information
//
// modified by rattle 2014-06-22

const int LIGHT_COUNT = 2;
attribute vec4 wings_tangent;

varying vec3 normal;
varying vec3 lightVec[LIGHT_COUNT];
varying vec3 eyeVec;
varying vec4 color;
varying vec4 tangent;

void main(void)
{
    vec3 viewPos = vec3(gl_ModelViewMatrix * gl_Vertex);
    eyeVec = normalize(-viewPos);
    for (int i = 0; i < LIGHT_COUNT; ++i) {
        lightVec[i] = normalize(gl_LightSource[i].position.xyz - viewPos);
    }
    color    = gl_FrontMaterial.diffuse * gl_Color;
    normal    = gl_NormalMatrix * gl_Normal;
    tangent.xyz = gl_NormalMatrix * wings_tangent.xyz;
    tangent.w = wings_tangent.w;
    gl_TexCoord[0]    = gl_MultiTexCoord0;
#ifdef __GLSL_CG_DATA_TYPES // Fix clipping for Nvidia and ATI
    gl_ClipVertex   = gl_ModelViewMatrix * gl_Vertex;
#endif
    gl_Position     = ftransform();
}

hemilight.fs
Code:
// $Id$
//
// Fragment shader for hemispherical lighting
//
// Author: Dan Gudmundsson
//
// modified by rattle 2014-06-22

const int LIGHT_COUNT = 2;

uniform int UseDiffuseMap;
uniform int UseNormalMap;

uniform sampler2D DiffuseMap;
uniform sampler2D NormalMap;

varying vec3 normal;
varying vec3 lightVec[LIGHT_COUNT];
varying vec3 eyeVec;
varying vec4 color;
varying vec4 tangent;

vec3 get_normal(vec3 T, vec3 N, float W, sampler2D M, vec2 C) {
    N = normalize(N);
    T = normalize(T);
    T = normalize(T - dot(T, N) * N);
    vec3 B = cross(T, N) * W;
    mat3 TBN = mat3(T, B, N);
    return normalize(TBN * (2.0 * texture2D(M, C).xyz - 1.0));
}

void main(void)
{
    vec3 N = UseNormalMap>0?get_normal(tangent.xyz, normal, tangent.w, NormalMap, gl_TexCoord[0].xy):normalize(normal);
    vec4 diffuseColor = UseDiffuseMap>0?texture2D(DiffuseMap, gl_TexCoord[0].xy):color;
    vec4 diffuse, specular;
    
    for (int i = 0; i < LIGHT_COUNT; ++i) {
        gl_LightSource[i].diffuse = vec4(1.0);
        gl_LightSource[i].ambient = vec4(1.0);
        gl_LightSource[i].specular = vec4(1.0);

        vec3 E = eyeVec;
        vec3 L = lightVec[i];
        float NdotL = dot(N, L);
        if (NdotL > 0.0) {
            vec3 R = normalize(reflect(-L, N));
            diffuse += gl_FrontLightProduct[i].diffuse * NdotL;
            specular += gl_FrontLightProduct[i].specular * pow(max(dot(R, E), 0.0), clamp(gl_FrontMaterial.shininess, 1.0, 128.0));
        }
    }
    gl_FragColor = gl_FrontLightModelProduct.sceneColor + diffuseColor * diffuse + specular;
}

Okay, I've changed your shader so it takes specularity into account, which can be controlled by the shininess material property and spec color.

In the fragment shader change LIGHT_COUNT to 1 or 2, it uses either one or two hardcoded lights. Somehow gl_FrontLightProduct[].ambient always appears as black... gl_FrontLightModelProduct.sceneColor has the ambient/emissive color in it though, so it should be fine as viewport shader.
« Next Oldest | Next Newest »

Users browsing this thread: 1 Guest(s)



Messages In This Thread
A new release - by dgud - 04-10-2014, 04:50 PM
RE: A new release - by oort - 04-10-2014, 06:55 PM
RE: A new release - by dgud - 04-10-2014, 07:17 PM
RE: A new release - by MikeJ - 04-10-2014, 07:31 PM
RE: A new release - by oort - 04-10-2014, 07:34 PM
RE: A new release - by micheus - 04-10-2014, 08:15 PM
RE: A new release - by dgud - 04-10-2014, 09:37 PM
RE: A new release - by micheus - 04-10-2014, 10:23 PM
RE: A new release - by nemyax - 04-10-2014, 10:31 PM
RE: A new release - by micheus - 04-10-2014, 10:33 PM
RE: A new release - by Fonte Boa - 04-10-2014, 11:56 PM
RE: A new release - by MikeJ - 04-11-2014, 12:47 AM
RE: A new release - by Fonte Boa - 04-11-2014, 01:24 AM
RE: A new release - by micheus - 04-11-2014, 01:31 AM
RE: A new release - by MikeJ - 04-11-2014, 02:16 AM
RE: A new release - by oort - 04-11-2014, 01:47 AM
RE: A new release - by dgud - 04-11-2014, 06:46 AM
RE: A new release - by micheus - 04-11-2014, 10:11 AM
RE: A new release - by dgud - 04-11-2014, 07:10 PM
RE: A new release - by Fonte Boa - 04-11-2014, 11:23 PM
RE: A new release - by micheus - 04-12-2014, 12:26 AM
RE: A new release - by MikeJ - 04-12-2014, 02:09 AM
RE: A new release - by oort - 04-11-2014, 11:28 PM
RE: A new release - by oort - 04-12-2014, 01:00 AM
RE: A new release - by dgud - 04-12-2014, 08:22 AM
RE: A new release - by dgud - 04-12-2014, 09:10 AM
RE: A new release - by Fonte Boa - 04-12-2014, 12:48 PM
RE: A new release - by dgud - 04-12-2014, 01:51 PM
RE: A new release - by Fonte Boa - 04-12-2014, 02:20 PM
RE: A new release - by nemyax - 04-12-2014, 02:31 PM
RE: A new release - by oort - 04-12-2014, 02:56 PM
RE: A new release - by dgud - 04-13-2014, 07:50 AM
RE: A new release - by Fonte Boa - 04-13-2014, 12:47 PM
RE: A new release - by MikeJ - 04-16-2014, 05:17 AM
RE: A new release - by dgud - 04-16-2014, 05:21 AM
RE: A new release - by MikeJ - 04-16-2014, 05:34 AM
RE: A new release - by garyphillips - 05-16-2014, 10:17 AM
RE: A new release - by rattle - 06-17-2014, 09:58 AM
RE: A new release - by dgud - 06-18-2014, 02:35 PM
RE: A new release - by Nova - 06-18-2014, 09:59 PM
RE: A new release - by rattle - 06-18-2014, 10:11 PM
RE: A new release - by dgud - 06-19-2014, 08:09 AM
RE: A new release - by Nova - 06-19-2014, 04:06 PM
RE: A new release - by Arg Arg - 06-20-2014, 04:06 PM
RE: A new release - by rattle - 06-22-2014, 07:07 PM
RE: A new release - by Nova - 06-26-2014, 06:17 AM
RE: A new release - by Epowerplus13 - 07-29-2014, 02:08 PM
RE: A new release - by joysonriad - 01-29-2015, 07:48 PM
RE: A new release - by royal52 - 01-31-2015, 11:23 AM
RE: A new release - by imbrecostel - 08-06-2015, 07:32 AM
RE: A new release - by klaster - 06-18-2016, 10:23 PM
RE: A new release - by 3DGeek46 - 11-01-2016, 12:20 PM

  • View a Printable Version
  • Subscribe to this thread
Forum Jump:

© Designed by D&D - Powered by MyBB

Linear Mode
Threaded Mode