Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by badescuga9 · Jan 29, 2013 at 01:46 PM · shadershaderlab

optimising shaderlab code and using properties variable

i've written a shader using shaderlab, that has a solid color on top of a texture and as the alpha for the solid color gets lower, the color and the texture blend together, leaving only the texture when alpha is 0. Here is the code:

  Shader "Custom/colorToOpaqueShader" {
         Properties {
             _MainTex ("main texture", 2D) = "white" {}
             _Color ("Color",Color) = (1,1,0,1)
             _ColorOpacity("Color Opacity",Float) = 1
                 }
         
         SubShader {
             
             
             Pass 
             {
             SetTexture[_MainTex]
             }
             
             Pass
             {
                 Blend SrcAlpha OneMinusSrcAlpha
                 Material 
                 {
                    Diffuse (1,1,1,.2)
                  }
              Lighting On
             }
             
             Pass
             {
             Blend SrcAlpha OneMinusSrcAlpha
           Material {
                    Diffuse [_Color]
                }
               Lighting On
               
             }
             
     
         } 
         
     }

First pass sets the texture, second pass adds a diffuse to the texture and the third pass sets out the color on top.

First question:

i would like to be able to control the color opacity using only a variable, not setting the entire color.

i.e. in the third pass i would like to have something like this:

 Diffuse(_Color.r,_Color.g,_Color.b,_ColorOpacity)

But 1) i can't get _Color.r using this sintax and 2) Although i have _ColorOpacity declared in properties, it doesn't seem to be usable (can't be recognized by unity)

Second question:

I haven't ever written a shader until today and was wondering how can i optimise this code.. 3 passes shoulds like a lot for such a small effect, i'm sure it could have been written in 1.

Third question:

How can i declare iterators in Shaderlab? i would like to have a int file that grows every frame, and have the opacity set something like

 Diffuse (.2,.2,.2, (i%40)/40)

I know i can set a variable from scripts, but i would like this functionality to be incorporated directly in a shader.

Note: If it is at your disposal, including a CG code example of this functionality would be great. I would like to start learning both shaderlab and cg to have a better grasp of the concepts

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Julien-Lynge · Jan 30, 2013 at 03:18 AM

Sorry, you have way too many questions for a single question. Please post them individually.

I'll try to answer what questions I can:

First, you can set the alpha separately with texture combiners. See this page:

http://docs.unity3d.com/Documentation/Components/SL-SetTexture.html

and look for Separate Alpha & Color computation.

/////////////////////////////////////////////////////////

If you're interested in learning Cg, here are some resources:

http://en.wikibooks.org/wiki/Cg_Programming/Unity

http://www.gamedev.net/topic/600658-best-place-to-start-shader-programming/

If you want to learn more about ShaderLab (the code you posted), this is a great set of tutorials:

http://www.burgzergarcade.com/unity-ios-shaderlab

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

10 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Pass ShaderLab properties to Standard cginc 2 Answers

Shader compiler: internal error compiling shader snippet type=0 platform=0: 1 Answer

Shadow Support in Custom Shader 0 Answers

How would I grab the lighting pass in a post process shader for deferred lighting? 0 Answers

Would learning some GLSL help with Unity Shading? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges