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 vargata · Apr 18, 2015 at 01:53 PM · shadertessellation

tessellation shader dx9

hi all helpful ppl. what i would like to do is: i have a simple tessellation shader runs perfect on dx11. now i wish if i could make it run on dx9 without the tessellation. i've tried the

         CGPROGRAM
         #ifdef SHADER_API_D3D11
               #pragma surface surf NoLight alpha:fade vertex:dispNone tessellate:tessEdge tessphong:_Phong nolightmap
               #include "Tessellation.cginc"
               #pragma target 5.0
           #else
                #pragma surface surf NoLight alpha:fade nolightmap
               #pragma target 3.0
           #endif


but it just ignores the second pragma surf and compile to dx11, so the shader does nothing on dx9 (Shader warning in 'Shieldeffect': Duplicate #pragma surface found, ignoring: #pragma surface surf NoLight alpha:fade nolightmap at line 43 (on ))

id like to know if it could be done with multipasses or multi_compile. any idea welcome :) thanks

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

Answer by defaxer · Apr 20, 2015 at 01:32 PM

You'll need to write two subshaders for DX11 and DX9 versions. Unity will pick right subshader version for your target platform

Something like that:

 Shader{
 Properties { ... }
 CGINCLUDE
     float4 YourTessellateFunction (appdata v0, appdata v1, appdata v2){...}
     void YourSurfFunction(Input IN, inout SurfaceOutput o){...}
 ENDCG
 SubShader // DX11 version
 {
     Tags { "RenderType"="Opaque" }
     LOD 300
    
     CGPROGRAM
     #pragma surface YourSurfFunction Lambert tessellate:YourTessellateFunction
     ENDCG
 }
 SubShader // DX9 version
 {
     Tags { "RenderType"="Opaque" }
     LOD 200
    
     CGPROGRAM
     #pragma surface YourSurfFunction Lambert
     ENDCG
 }
 }
Comment
Add comment · Show 1 · 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 vargata · Apr 20, 2015 at 01:38 PM 0
Share

thanks a lot :)

avatar image
0

Answer by defaxer · Apr 20, 2015 at 01:32 PM

You'll need to write two subshaders for DX11 and DX9. Unity will pick right version for your target platform.

Something like that:

     Shader{
     Properties { ... }
     CGINCLUDE
         float4 YourTessellateFunction (appdata v0, appdata v1, appdata v2){...}
         void YourSurfFunction(Input IN, inout SurfaceOutput o){...}
     ENDCG
     SubShader //DX11 version
     {
         Tags { "RenderType"="Opaque" }
         LOD 300
        
         CGPROGRAM
         #pragma surface YourSurfFunction Lambert tessellate:YourTessellateFunction
         ENDCG
     }
     SubShader //DX9 version
     {
         Tags { "RenderType"="Opaque" }
         LOD 200
        
         CGPROGRAM
         #pragma surface YourSurfFunction Lambert
         ENDCG
     }
     }
 
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

19 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

No Shadows on Tessellated Terrain 1 Answer

How to avoid "tesselation gap" 5 Answers

How to use this tessellation cginc with URP? 1 Answer

Standard Shader with Phong Tessellation? 0 Answers

Unity 2017 displacement for megascans objects 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