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 PEOWIfjpwoiqjf · Mar 22, 2012 at 03:49 PM · shadercolorvertex

Shader Vertex Data Format

Hi,

I am attempting to use the vertex data in a surface shader to get an angle. I have the camera centered at 0,0. In what coordinate system is v.vertex in the vertex function?

 #pragma surface surf Lambert vertex:vert nolightmap 
 
 void vert (inout appdata_full v, out Input o) 
     {
         o.svc =(1-(_vc*v.vertex.z)/sqrt(pow(v.vertex.x,2) + pow(v.vertex.y,2) + pow(v.vertex.z,2)))/sqrt( 1 - _vc  * _vc);
     }

I thought it would be the world coordinate system, but I get different results for objects that are rotated in unity when compared to objects that are rotated in 3DS Max ahead of time to look the same vertex wise. What data am I actually recieving with v.vertex.xyz?

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

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by Owen-Reynolds · Mar 23, 2012 at 12:10 AM

It's the unmodified "raw" coords, also known as local; before position or rotation, based on the model's personal (0,0,0).

For world xyz, take v.vertex times the world matrix.

Comment
Add comment · Show 2 · 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
avatar image PEOWIfjpwoiqjf · Mar 26, 2012 at 02:07 PM 0
Share

Thanks, how would I get the world matrix? I know that I can get the worldPos in the main shader, but I'm running out of instructions so I need to do it in the vertex modifier function.

avatar image Owen-Reynolds · Mar 26, 2012 at 09:22 PM 0
Share

Yep -- do as much math in the vertex shader as you can.

Looking at http://unity3d.com/support/documentation/Components/SL-BuiltinStateInPrograms.html, they have almost everything but "worldView" $$anonymous$$ATRIX_$$anonymous$$. I think most people use $$anonymous$$V ("world" coords in the camera's frame of reference.) SL-SurfaceShaderExamples.html has an example of use: float4 hpos = mul (UNITY_$$anonymous$$ATRIX_$$anonymous$$VP, v.vertex);

It looks like $$anonymous$$atrix4x4.SetTRS could be used in a script to create a worldView matrix for your model, and be passed as an extra parm to the shader (but I've never done that.)

avatar image
0

Answer by cupsster · May 02, 2012 at 01:38 PM

Maybe you could also inspect Unity3D.cginc there should be some snippets that handle this if I remember it right.

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Vertex colour transparency and Beast lightmapping? 3 Answers

How to add Vertex color to Emission color on this shader? 1 Answer

How much information can you store in vertex color? 2 Answers

Change vertex color of a mesh. 2 Answers

Color depending on vertex normal 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