Parallax Specular Occlusion with Real Specular Map?

Hey, I am not really very good at writing shaders and am the only programmer in our team so I don’t really have a lot of time to learn either. I found this shader in the forums and I was wondering how I could use a real Specular map for this shader instead having the script generate a fake one from the diffuse. If someone could help me, it would very much appreciated. Thank you in advance!

Shader "Parallax Specular Occlusion" {

Properties {

    _Color ("Main Color", Color) = (1,1,1,1)

    _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)

    _Shininess ("Shininess", Range (0.01, 1)) = 0.078125

    _Parallax ("Height", Range (0.005, 0.08)) = 0.02

    _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}

    _BumpMap ("Normalmap", 2D) = "bump" {}

    _ParallaxMap ("Heightmap (A)", 2D) = "black" {}

    _Occlusion ("Occlusion Map", 2D) = "white" {}

}

SubShader { 

    Tags { "RenderType"="Opaque" }

    LOD 600

    

CGPROGRAM

#pragma surface surf BlinnPhong

#pragma target 3.0

 

sampler2D _MainTex;

sampler2D _BumpMap;

sampler2D _ParallaxMap;

sampler2D _Occlusion;

fixed4 _Color;

half _Shininess;

float _Parallax;

 

struct Input {

    float2 uv_MainTex;

    float2 uv_BumpMap;

    float3 viewDir;

};

 

void surf (Input IN, inout SurfaceOutput o) {

    half h = tex2D (_ParallaxMap, IN.uv_BumpMap).w;

    float2 offset = ParallaxOffset (h, _Parallax, IN.viewDir);

    IN.uv_MainTex += offset;

    IN.uv_BumpMap += offset;

    

    fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);

    fixed4 Occ = tex2D(_Occlusion, IN.uv_MainTex);

    o.Albedo = tex.rgb * _Color.rgb * Occ.rgb;

    o.Gloss = tex.a;

    o.Alpha = tex.a * _Color.a;

    o.Specular = _Shininess;

    o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));

}

ENDCG

}

 

FallBack "Bumped Specular"

}

This is an extremely basic question even for an entry-level programmer. I’m not trying to be rude, but you need to deduce this level of functionality on your end so you can become more adept. The problem is relatively simple: Just look at how a diffuse texture is passed in and sampled. Then add similar code to allow a specular texture to be passed in and modify the specular line to sample from the texture in teh same manner as the diffuse and add the relevant shader calculation to make it act as a scalar/intensity-attenuator.

First of all, no problem, you are not sounding rude as I have never written anything with shaders so I am probably even less than an “entry-level programmer” in terms of shading. Thanks for your info I will now try to find out how to do this.

I gave it a shot and ended up here:
http://forum.unity3d.com/threads/206421-Parallax-Shader-with-Bump-Specular-and-Occlusion-Maps

If it is as easy as you say it is, could you tell me what I did wrong there? It would be much appreciated!